2016-03-11 1 views
2

Я новичок в программировании, пожалуйста, помогите мне в этом сценарии. Я пытаюсь разработать код для программыкак разбить 100 строк в xml-файле, который имеет n количество строк и добавить его в подфайлы с помощью java

У меня есть xml-файлы, которые содержат X количество строк, и мне нужно поместить первые 100 строк этого файла в другой подфайл и рядом с другим подфайлом и так далее до конца. именовании должно быть как file1, file2, ....

Входные файлы будут 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 для этого. –

ответ

2

Вы можете сделать что-то вроде этого, чтобы достичь того, чего вы пытаетесь достичь:

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

Начальный подход:

  • 1) Прочитайте следующую строку в цикле.
  • 2) Приращение счетчика & добавьте текущую строку в строку.
  • 3) Каждый раз, когда счетчик обращается к новому 100 десятичному значению, выпишите String (содержащий набор строк) в новый файл.
  • 4) Очистить строку.

Я считаю, что лучше сделать описание, а затем выдавать код, особенно для новичков.

Смежные вопросы