在java中从一个文本文件创建多个文件

时间:2017-04-18 12:28:29

标签: java filestream file-handling

我有一个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多个输出文件。

2 个答案:

答案 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} }},如果有足够的内容可以返回Filetrue如果它无法读取限制行数(即中止下一次调用,请不要尝试阅读更多行或写下一个文件)。

然后你会在循环中调用它,传递false,新文件名和限制数。

以下是一个例子:

Reader