如何从文件目录中读取而不仅仅是1个文件Java

时间:2016-02-25 17:47:57

标签: java algorithm

我想从一个文件目录中读取,而不仅仅是一个文件Java,我已经完成了大部分设置,我只是坚持如何实现它。我想为目录中的每个文件调用generatePdf()

这是我的代码:

我想从一个文件目录中读取,而不仅仅是一个文件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;
}

我的计划是编写一个新方法,在文件数组(File [])中有多次调用generatePdf()。任何帮助或建议将不胜感激,谢谢。

我的计划是编写一个新方法,在文件数组(File [])中有多次调用generatePdf()。任何帮助或建议将不胜感激,谢谢。

1 个答案:

答案 0 :(得分: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);