Можно сделать что-то вроде этого:
public static void convertAllCSV(String directory)
{
try
{
ArrayList<String> files = findFiles(directory); //Returns list of all files in folder with .pdf extension
for (String s : files)
{
convertSingleCSV(s, directory); //Your current code placed into a method
}
}
catch (IOException e)
{
e.printStackTrace();
}
}
Метод findFiles
выглядит следующим образом:
public static ArrayList<String> findFiles(String directory) throws IOException
{
ArrayList<String> fileList = new ArrayList<String>();
File dir = new File(directory);
String ext = ".pdf";
String[] files = dir.list();
for (String file : files)
{
//If the file ends with .pdf
if(file.endsWith(ext))
{
fileList.add(file);
}
}
return fileList;
}
В основном нужно добавить 2 шага. Вам нужно передать имя каталога и найти все файлы в каталоге с расширением .pdf
, а затем использовать его для вызова исходного метода по одному через цикл.
convertSingleCSV
- ваш код, помещенный в метод, затем использует имя файла и каталог для вывода нового файла. Поэтому вместо жесткого кодирования имени FileOutputStream
просто преобразуйте его, выполнив что-то вроде этого:
String fileNameNoExtension = fileName.substring(0, fileName.lastIndexOf('.')); //Cuts off the file extension to append csv instead of pdf
FileOutputStream fos = new FileOutputStream(directory + "\\" + fileNameNoExtension + ".csv")
Преимущество этого способа заключается в том, что вы сохраняете исходные имена файлов, а просто создаете новый файл с расширением .csv
, и он будет пытаться конвертировать только файлы .pdf
, и вам не придется беспокоиться о убедитесь, что другие файлы не находятся в переданном каталоге.