我有一个Activity
文件,假设有520行。
我必须在java中创建一个像这样的代码。
从前200行创建名为input.txt
的第一个文件。然后从201-400行创建另一个file-001.txt
。然后从剩下的行中file-002
。
我编写了这个,它只写了前200行。为了将其工作更新到上述情况,我需要做出哪些更改。
file-003.txt
一种方法可以使用 public class DataMaker {
public static void main(String args[]) throws IOException{
DataMaker dm=new DataMaker();
String file= "D:\\input.txt";
int roll=1;
String rollnum ="file-00"+roll;
String outputfilename="D:\\output\\"+rollnum+".txt";
String urduwords;
String path;
ArrayList<String> where = new ArrayList<String>();
int temp=0;
try(BufferedReader br = new BufferedReader(new FileReader(file))) {
for(String line; (line = br.readLine()) != null; ) {
++temp;
if(temp<201){ //may be i need some changes here
dm.filewriter(line+" "+temp+")",outputfilename);
}
}
} catch (FileNotFoundException e) {
System.out.println("File not found");
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
void filewriter(String linetoline,String filename) throws IOException{
BufferedWriter fbw =null;
try{
OutputStreamWriter writer = new OutputStreamWriter(
new FileOutputStream(filename, true), "UTF-8");
fbw = new BufferedWriter(writer);
fbw.write(linetoline);
fbw.newLine();
}catch (Exception e) {
System.out.println("Error: " + e.getMessage());
}
finally {
fbw.close();
}
}
}
,但我不能使用它,因为我的实际文件是6000多行。
我想让这段代码像我运行代码一样工作,并给我30多个输出文件。
答案 0 :(得分:1)
您可以更改以下位:
if(temp<201){ //may be i need some changes here
dm.filewriter(line+" "+temp+")",outputfilename);
}
到此:
dm.filewriter(line, "D:\\output\\file-00" + ((temp/200)+1) + ".txt");
这将确保前200行转到第一个文件,接下来200行转到下一个文件,依此类推。
此外,您可能希望将200行一起批处理并一次写入,而不是每次都创建writer
并写入文件。
答案 1 :(得分:0)
您可能有一种方法可以为当前Writer
创建File
,读取最多limit
行数,将Writer
关闭到当前{{1} }},如果有足够的内容可以返回File
,true
如果它无法读取限制行数(即中止下一次调用,请不要尝试阅读更多行或写下一个文件)。
然后你会在循环中调用它,传递false
,新文件名和限制数。
以下是一个例子:
Reader