2016-09-08 85 views
-1

我想剪切文本文件。 我想用50行剪下50行文件。分割文件Java

例如,如果文件是1010行,我会恢复21个文件。

我知道如何计算文件的数量,行数,但只要我写,它是行不通的。

我使用Camel Simple(Talend),但它是Java代码。

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(); 
       } 
      } 
     } 
    } 

对于人谁不知道骆驼,这条线是用来发送文件:

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

端点==>目标(这是确定与其他代码)

线。的toString()==>值

,然后将文件名(这是确定与其他代码)

+0

你想干什么?你的问题是什么? –

回答