如何在具有n行数的xml文件中分割100行,并将其添加到使用java的子文件中

如何在具有n行数的xml文件中分割100行,并将其添加到使用java的子文件中

问题描述:

我对编程很陌生,请帮助我解决这种情况。 我试图设计一个程序的代码如何在具有n行数的xml文件中分割100行,并将其添加到使用java的子文件中

我有一个xml文件,其中包含X行的数量,我需要把该文件的第100行到另一个子文件和旁边的另一个子文件等等直到最后。命名约定应该像文件1,文件2,...

输入文件将是5000,10000个,甚至更多行

我需要为这个场景动态代码中使用DOM解析器

我设计具有常量行的文件的代码。

import java.io.*; 
public class splitting 
{ 
public static void main(String args[])throws Exception 
{ 
    int count = 0; 
     BufferedReader br = null; 
     FileWriter fileWriter1 = new FileWriter("C:\\senderoutput1.txt"); 
     FileWriter fileWriter2 = new FileWriter("C:\\senderoutput2.txt"); 
     FileWriter fileWriter3 = new FileWriter("C:\\senderoutput3.txt"); 
     FileWriter fileWriter4 = new FileWriter("C:\\senderoutput4.txt"); 

     try { 
      String currentLine; 
      br = new BufferedReader(new FileReader("C:\\senderinput.txt")); 
      while ((currentLine = br.readLine()) != null) 
      { 
       count++; 

       if (count <= 100) 
       { 

        fileWriter1.write(currentLine + System.getProperty("line.separator", "\r\n")); 

       } else if (count > 100 && count <= 200) 
       { 
        fileWriter2.write(currentLine + System.getProperty("line.separator", "\r\n")); 
       }else if (count > 200 && count <= 300) 
       { 
        fileWriter3.write(currentLine + System.getProperty("line.separator", "\r\n")); 
       }else if (count > 300 && count <= 400) 
       { 
        fileWriter4.write(currentLine + System.getProperty("line.separator", "\r\n")); 
       } 
      } 
     } finally 
      { 
      if (br != null) 
      { 
       br.close(); 
      } 
      fileWriter1.close(); 
      fileWriter2.close(); 
      fileWriter3.close(); 
      fileWriter4.close(); 
      System.out.println("File Splitting was successful!!!"); 
      } 
} 
} 

此代码适用于具有400行的文件。

如何做n行?

+0

不确定以这种方式拆分XML文件是好的。结果文件将无效(XML)。可能是一个示例XML内容在这里会有所帮助,并且您可能希望为此使用StAX。 –

你可以做这样的事情,以达到你想达到什么目的:

BufferedReader br = null; 
FileWriter fileWriter = new FileWriter("C:\\senderoutput1.txt"); 
try { 
    String currentLine = null; 
    br = new BufferedReader(new FileReader("C:\\senderinput.txt")); 
    while ((currentLine = br.readLine()) != null) { 
     /* Increment Counter */ 
     ++count; 
     /* Write Text To File */ 
     fileWriter.write(currentLine + System.getProperty("line.separator", "\r\n")); 
     /* Check Split Condition */ 
     if (count % 100 == 0) { 
      /* Close Already Open File */ 
      fileWriter.close(); 
      /* Point To New File */ 
      fileWriter = new FileWriter("C:\\senderoutput" + (count/100 + 1) + ".txt"); 
     } 
    } 
    /* Close Last Open File */ 
    fileWriter.close(); 
} finally { 
    if (br != null) { 
     br.close(); 
    } 
    System.out.println("File Splitting Completed Successfully!!!"); 
} 

请注意,这只是给你一个想法,你可以修改它按您的需求。

初学的方法:

  • 1)阅读在一个循环中的下一行。
  • 2)递增计数器&将当前行追加到字符串中。
  • 3)每当计数器达到一个新的100十进制值时, 会将字符串(其中包含行的集合) 写出到新文件中。
  • 4)清除字符串。

我相信最好能做一个描述,然后给出代码,特别是对于初学者。