ディレクトリをトラバースして "rels.txt"というファイルのインスタンスをすべて検索しようとしていますが、各インスタンスごとにファイルに移動して個々のファイルをロードします値をファイルからJavaのHashMapにコピーします。以下は、私が働いている「rels.txt」のいずれかのファイルの内容は以下のとおりです。ファイルをJavaのHashMapにスキャンする
テキストファイル:
rId8,image2
rId13,image5
rId7,image1
rId12,image4
rId17,image8
rId15,image7
rId9,image3
rId14,image6
ここで私が持っているJavaコードを行き来することになっているというこれまでにありその値をHashMapに保存し、HashMapを印刷してから削除します(新しい値のセットをディレクトリ内の別の "rels.txt"ファイルから保存することができます)。
Javaコード:
private void traverse(File directory) throws FileNotFoundException
{
//Get all files in directory
File[] files = directory.listFiles();
for (File file : files)
{
if (file.getName().equals("rels.txt"))
{
Scanner scan = new Scanner(file).useDelimiter(",");
while (scan.hasNextLine())
{
String id;
String image;
id = scan.next();
image = scan.next();
imageMap.put(id, image);
}
System.out.println(imageMap);
imageMap.clear();
}
else if (file.isDirectory())
{
//It's a directory so (recursively) traverse it
traverse(file);
}
}
}
これは私が取得していると私は私が間違っているつもりどこかなりわからないエラー/出力されます。
エラーこのコードの/出力
Exception in thread "main" java.util.NoSuchElementException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at XMLTagParser.traverse(XMLTagParser.java:153)
at XMLTagParser.traverse(XMLTagParser.java:198)
at XMLTagParser.traverse(XMLTagParser.java:198)
at XMLTagParser.<init>(XMLTagParser.java:27)
at IPDriver.main(IPDriver.java:21)
{image26
rId19=image9
rId31, image15
rId33=image23
rId38, image29
rId21=image11
rId34, image12
rId27=image17
rId30, image28
rId16=image6
rId20, image14
rId32=image22
rId37, image2
rId17=image7
rId25, rId13=image3
rId18, image20
rId35=image25
, image8
rId26=image16
rId39, image24
rId7=image1
rId12, image21
rId14=image4
rId22, image10
rId29=image19
rId24, image13
rId28=image18
rId36, image27
rId15=image5
rId23}
は、私は基本的にちょうど私のプロジェクトの別の部分のためのHashMapを呼び出すことができるようにしたいと私はRIDの値のいずれかを参照するとき、私は得ることができます対応するイメージ値誰かが私が間違っているかもしれないか、あるいはもっと効率的な解決法について何か考えを持っていますか?前もって感謝します。
FriedrikにワーキングJavaコードのおかげ:あなたのファイルを想定し
private void traverse(File directory) throws FileNotFoundException
{
//Get all files in directory
File[] files = directory.listFiles();
for (File file : files)
{
if (file.getName().equals("rels.txt"))
{
Scanner scan = new Scanner(file);
while (scan.hasNextLine())
{
String[] line = scan.nextLine().split(",");
imageMap.put(line[0], line[1]);
}
System.out.println(imageMap);
imageMap.clear();
}
else if (file.isDirectory())
{
//It's a directory so (recursively) traverse it
traverse(file);
}
}
}
私はあなたが言っていることを見ていますが、デリミタに追加の引数を追加するにはどうすればよいですか? (最初にそれを使って作業して、ごめんなさい) –
多分正規表現 "[、] [\ n]"。完全にはわかりません。あなたが望むなら、私はあなたにこれを行う別の方法を与えることができます。 – Friedrik
ええ、確かに、任意の提案にオープン –