2016-09-08 6 views
-1

Ich möchte eine Textdatei schneiden. Ich möchte die Datei 50 Zeilen um 50 Zeilen schneiden.Split-Datei Java

Zum Beispiel, wenn die Datei 1010 Zeilen ist, würde ich 21 Dateien wiederherstellen.

Ich weiß, wie man die Anzahl der Dateien zählt, die Anzahl der Zeilen, aber sobald ich schreibe, es funktioniert nicht.

Ich benutze die Camel Simple (Talend), aber es ist Java-Code.

private void ExtractOrderFromBAC02(ProducerTemplate producerTemplate, InputStream content, String endpoint, String fileName, HashMap<String, Object> headers){ 
     ArrayList<String> list = new ArrayList<String>(); 
     BufferedReader br = new BufferedReader(new InputStreamReader(content)); 
     String line; 
     long numSplits = 50;     
     int sourcesize=0; 
     int nof=0; 
     int number = 800; 
     try {    
      while((line = br.readLine()) != null){ 
        sourcesize++; 
        list.add(line); 
      } 

     System.out.println("Lines in the file: " + sourcesize);  

     double numberFiles = (sourcesize/numSplits); 
     int numberFiles1=(int)numberFiles; 
       if(sourcesize<=50) { 
        nof=1; 
       } 
       else { 
        nof=numberFiles1+1; 
       } 
     System.out.println("No. of files to be generated :"+nof); 

     for (int j=1;j<=nof;j++) { 
       number++; 
       String Filename = ""+ number; 
       System.out.println(Filename); 

      StringBuilder builder = new StringBuilder(); 
      for (String value : list) { 
       builder.append("/n"+value); 
      } 

      producerTemplate.sendBodyAndHeader(endpoint, builder.toString(), "CamelFileName",Filename); 
     } 

      } 

     } catch (IOException e) { 
       e.printStackTrace(); 
     } 
      finally{ 
       try { 
        if(br != null)br.close(); 
       } catch (IOException e) { 
        e.printStackTrace(); 
       } 
      } 
     } 
    } 

Für Menschen, die Camel nicht kennen, wird diese Linie verwendet, um die Datei zu senden:

producerTemplate.sendBodyAndHeader (endpoint, line.toString(), "CamelFileName" Filename); 

Endpunkt ==> Ziel

Linie (es mit einem anderen Code ist ok). toString() ==> Werte

Und dann der Dateiname (es mit einem anderen Code ok)

+0

Was möchten Sie tun? Was ist deine Frage? –

Antwort

0

Sie ca Verwenden n den Splitter mit dem tokenizer und Gruppen es um 50.

Siehe Splitting Abschnitt Dateien von N Zeilen zusammen bei Gruppierung: