テキストファイルを読み取り、空白行が検出されるたびに新しいファイルを書き出す単純な Java プログラムを作成したいと考えています。ファイルを読み込む例を見たことがありますが、空白行を検出して複数のテキスト ファイルを出力する方法がわかりません。
ファイルイン.txt:
line1
line2
line3
fileOut1.txt:
line1
line2
fileOut2.txt:
line3
テキストファイルを読み取り、空白行が検出されるたびに新しいファイルを書き出す単純な Java プログラムを作成したいと考えています。ファイルを読み込む例を見たことがありますが、空白行を検出して複数のテキスト ファイルを出力する方法がわかりません。
ファイルイン.txt:
line1
line2
line3
fileOut1.txt:
line1
line2
fileOut2.txt:
line3
空の文字列を検出して、行が空白かどうかを調べることができます。例えば:
if(str!=null && str.trim().length()==0)
または、実行できます (JDK 1.6 以降を使用している場合)
if(str!=null && str.isEmpty())
空白行を検出する方法がわかりません..
if (line.trim().length==0) { // perform 'new File' behavior
.. 複数のテキスト ファイルを出力します。
ループ内で、単一のファイルに対して行われることを行います。
このようなことをする必要があります:
public static void main(String[] args) throws Exception {
writeToMultipleFiles("src/main/resources/fileIn.txt", "src/main/resources/fileOut.txt");
}
private static void writeToMultipleFiles(String fileIn, String fileOut) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(new File(fileIn))));
String line;
int counter = 0;
BufferedWriter wr = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(new File(fileOut))));
while((line=br.readLine())!=null){
if(line.trim().length()!=0){
wr.write(line);
wr.write("\n");
}else{
wr.close();
wr = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(fileOut + counter)));
wr.write(line);
wr.write("\n");
}
counter++;
}
wr.close();
}
BufferedReader br = new BufferedReader(new FileReader("test.txt"));
String line;
int empty = 0;
while ((line = br.readLine()) != null) {
if (line.trim().isEmpty()) {
// Line is empty
}
}
上記のコード スニペットを使用して行が空かどうかを検出し、その時点でFileWriterを作成して新しいファイルに書き込むことができます。