2016-02-25 159 views
0

我想從文件目錄中讀取而不是僅讀取一個文件Java,我已經獲得了大部分此設置,如何使它發生。我想打電話給每個文件generatePdf()在目錄如何從文件目錄讀取而不是僅讀取一個文件Java

這裏是我的代碼:

我想從文件中,而不是僅僅1文件的Java的目錄中讀取,我已經得到了大多數這個設置,我只是堅持如何實現。我想打電話給每個文件generatePdf()在目錄

這裏是我的代碼:

private void run() throws Exception 
{ 
    // This call here 
    byte[] pdfBytes = this.generatePdf(); 

    I was thinking I could do something like this 

    // some more processing 

} 

private void callGeneratePdf(File[] listOfFiles) 
{ 

    listOfFiles = getListOfFiles(DEFAULT_FORMML_FILE); 

    for(File f : listOfFiles) 
    { 
     f = generatePdf(); // ??? 
    } 
} 

private byte[] generatePdf() throws Exception 
{ 
    String appPrintList = "<PrintListML/>"; // Empty application specific print list; no record worksheets will be included. 

    String formML = PrintEngine.readFileAsString(inputFormML.getAbsolutePath()); 

    PrintListOptions plOptions = new PrintListOptions().setIncludeRecords(true).setRequireFormMLStatusPOR(true).setRequireFormMLStatusActive(false); 
    PrintOptions pOptions = new PrintOptions().setItemizations(true).setSmartWorksheets(true); 

    // Generate the PDF 
    return FpsService.getPrintJob(formML, appPrintList, plOptions, pOptions);  
} 



private static File[] getListOfFiles(String path) 
{ 

    String files; 
    File folder = new File(path); 
    File[] listOfFiles = folder.listFiles(); 

    for (int i = 0; i < listOfFiles.length; i++) { 

     if (listOfFiles[i].isFile()) { 
      files = listOfFiles[i].getName(); 
      System.out.println(files); 
     } 
    } 

    return listOfFiles; 
} 

我的計劃是編寫調用generatePdf()多次的新方法存在的文件文件數組(File [])。任何幫助或建議將不勝感激,謝謝。

我的計劃是編寫一個新的方法,調用generatePdf()的次數是File數組(File [])中的文件的次數。任何幫助或建議將不勝感激,謝謝。

+0

如何將文件傳遞給generatePdf()?您可以在傳入的文件中調用getAbsolutePath(),而不是「inputFormML」變量。 – stdunbar

+0

'Files.walk()'將有助於 –

+0

早前提出了同樣的問題。下面是它的鏈接http://stackoverflow.com/questions/1844688/read-all-files-in-a-folder – user3509208

回答

0

如何使用SimpleFileVisitor的特殊實現,每次訪問文件時都會調用您的邏輯?

final FileVisitor<Path> myWalker = new SimpleFileVisitor<Path>() { 
    @Override 
    public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException { 
     if(Files.isRegularFile(file, LinkOption.NOFOLLOW_LINKS)){ 
      //Call f = generatePdf() 
     } 
     return super.visitFile(file, attrs); 
    } 
}; 
Files.walkFileTree(Paths.get("/yourpath/"), myWalker);