次の行を含むファイル「a.txt」があります。
14,15,16,17
13,16,15,14
15,17,12,13
...
...
各行には常に 4 つの列があることを知っています。
このファイルを読み取り、区切り文字 (ここでは ",") に基づいて行を分割し、各列の値を対応するファイルに書き込む必要があります。つまり、列の値が 14 の場合は、14 でダンプ/書き込みする必要があります。 .txt、15 の場合は 15.txt などに書き込まれます。
これが私が今までやったことです:
Map <Integer, String> filesMap = new HashMap<Integer, String>();
for(int i=0; i < 4; i++)
{
filesMap.put(i, i+".txt");
}
File f = new File ("a.txt");
BufferedReader reader = new BufferedReader (new FileReader(f));
String line = null;
String [] cols = {};
while((line=reader.readLine()) != null)
{
cols = line.split(",");
for(int i=0;i<4;i++)
{
File f1 = new File (filesMap.get(cols[i]));
PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter(f1)));
pw.println(cols[i]);
pw.close();
}
}
したがって、ファイル「a.txt」の行番号 1 では、ファイル 14.txt、15.txt、16.txt、および 17.txt を開き、書き込み、閉じる必要があります。
行番号 2 についても、ファイル 14.txt、15.txt、16.txt と新しいファイル 13.txt を開き、書き込み、閉じる必要があります。
以前に開いたファイルを開いたり閉じたりする必要がない、より良いオプションはありますか。
完全な操作の最後に、開いているすべてのファイルを閉じます。