[英]Read one line at a time from a file and write to different files
如何一次從一個文件讀取一行並寫入不同的文件?
想知道如何一次讀取一行並寫入不同的文件。 谷歌搜索時找不到很好的例子:
例如,讀取具有以下內容的文本文件:sent1 sent2 sent3...。
將send1寫入1.txt,send2寫入2.txt,send3寫入3.txt
這似乎是一個簡單的操作,我的編碼有問題,不確定如何解決。
import java.util.*;
import java.io.*;
public class MyFunction {
public static void main(String args[])
throws IOException, ClassNotFoundException
{
//variable initialization
String strLine;
int i = 0;
//Read in a file and process one line at a time
FileReader singleFile = new FileReader("C:\\data);
BufferedReader reader = new BufferedReader(singleFile);
for (int j=0; j < 12; j++) {
FileWriter outFile = new FileWriter("C:\\doc" + i + ".txt");
BufferedWriter writer = new BufferedWriter(outFile);
//Read one line at a time from the input file
while ((strLine = reader.readLine()) !=null) {
//process a string which is not empty
if (strLine.length() > 0) {
System.out.println("This is strLine: " + strLine);
writer.write (strLine);
i=i+1;
System.out.println("This is i: " + i);
} //end of if
}
singleFile.close();
writer.close();
} }}
最簡單的方法可能是在一個數組中打開n個FileWriters(每個輸出文件一個)(我將數組稱為“ writers”)。 設置一個計數器i =0。遍歷輸入行時,將當前行寫入writers [i],然后遞增i並設置i = i%n。 這將使我在0..n-1范圍內循環,這意味着您將以0,1,... n-1,0,1 ...的順序寫入文件,我認為這是您想要的。
您會陷入困境,直到文件完成。 取出while循環,並用if代替for循環。 那只會讓您獲得前12行。 之后,將for循環更改為while循環,然后手動遞增j,如果j> = 12,則將j設置為0。
下面的代碼循環了12個文件,這就是您想要的嗎?
import java.util.*;
import java.io.*;
public class MyFunction {
public static void main(String args[])
throws IOException, ClassNotFoundException
{
//variable initialization
String strLine;
int i = 0;
//Read in a file and process one line at a time
FileReader singleFile = new FileReader("C:\\data);
BufferedReader reader = new BufferedReader(singleFile);
j = 0;
while (true) { //loop forever
FileWriter outFile = new FileWriter("C:\\doc" + j + ".txt");
BufferedWriter writer = new BufferedWriter(outFile);
//Read one line at a time from the input file
if ((strLine = reader.readLine()) !=null) { break; } // exit loop
//process a string which is not empty
if (strLine.length() > 0) {
System.out.println("This is strLine: " + strLine);
writer.write (strLine);
i=i+1;
j=j+1;
if (j >= 12) {j=0};
System.out.println("This is i: " + i);
} //end of if
singleFile.close();
writer.close();
} }}
它適用於以下代碼。 由於我知道文檔中只有12行-想知道如何在輸入文件中找出總行號。
import java.util.*;
import java.io.*;
public class MyFunction {
public static void main(String args[])
throws IOException, ClassNotFoundException
{
//variable initialization
String strLine;
//Read in a file and process one line at a time
FileReader singleFile = new FileReader("C:\\data\\data.txt");
BufferedReader reader = new BufferedReader(singleFile);
for (int i=0; i<12; i++) {
FileWriter outFile = new FileWriter("C:\\sample\\doc" + i + ".txt");
BufferedWriter writer = new BufferedWriter(outFile);
//Read one line at a time from the input file
if ((strLine = reader.readLine()) !=null)
//process a string which is not empty
if (strLine.length() > 0) {
System.out.println("This is strLine: " + strLine);
writer.write (strLine);
System.out.println("This is i: " + i);
} //end of if
singleFile.close();
writer.close();
} }}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.