2013-10-02 67 views
1

我想連接使用以下方法的一組文本文件。但是,只有第一個文件顯示在輸出文件中。使用FileChannel連接文本文件

public void concatenateFiles(List<String> fileLocations, String outputFilename){ 
try(FileChannel outputChannel = new FileOutputStream(outputFilename).getChannel()) { 
    long position = 0; 
    for(String fileLocation: fileLocations){ 
     try(FileChannel inputChannel = new FileInputStream(new File(fileLocation)).getChannel()){ 
      position += inputChannel.transferTo(position, inputChannel.size(), outputChannel); 
     } 
    } 
} catch (FileNotFoundException e) { 
    e.printStackTrace(); 
} catch (IOException e) { 
    e.printStackTrace(); 
} 

}

你看到什麼問題?

+0

起始位置我將如何解決這個問題? – locorecto

+0

這是爲你編譯的嗎? –

+0

是的,它不會在單元測試中返回任何錯誤,除了輸出文件不是應該的。 – locorecto

回答

3

變化

position += inputChannel.transferTo(position, inputChannel.size(), outputChannel); 

position += inputChannel.transferTo(0, inputChannel.size(), outputChannel); 

第一個參數是用於讀取inputChannel

+0

所以,我真的不需要位置變量,對吧? – locorecto

+0

太棒了...這個效果很好。 – locorecto

+1

是的,對於合併文件是不必要的。 – Nicolai