Я работаю над консольным приложением, использующим Java 1.8, которое будет читать json файлы из каталога. Каждый файл будет обработан и затем перемещен в другую папку. Моя проблема - ошибка, которую вы видите в заголовке этого вопроса.
Это моя функция, чтобы вывести список всех файлов в папке
public static void search(final String pattern, final File folder, List<String> result) {
for (final File f : folder.listFiles()) {
if (f.isDirectory()) {
search(pattern, f, result);
}
if (f.isFile()) {
if (f.getName().matches(pattern)) {
if(f.length() > 0) {
result.add(f.getAbsolutePath());
}
}
}
}
}
Это моя функция, чтобы прочитать строку файла
static String readFile(String path, Charset encoding) throws IOException
{
byte[] encoded = Files.readAllBytes(Paths.get(path));
return new String(encoded, encoding);
}
Это моя функция для перемещения файла:
private static void moveFile(String filename){
String pathFrom = moveFilesFrom + filename;
String pathTo = moveFilesTo + filename;
try {
Files.move(Paths.get(pathFrom), Paths.get(pathTo));
} catch (IOException e) {
log.error("Failed to move file from " + pathFrom + " to " + pathTo);
e.printStackTrace();
}
}
И, наконец, как я использую эти файлы. result
- это List<String>
, возвращаемое с search
:
for (String jsonFile : result) {
try {
String jsonString = readFile(jsonFile, Charset.defaultCharset());
JSONParser parser = new JSONParser();
JSONObject jsonObject = (JSONObject) parser.parse(jsonString);
JSONArray data = (JSONArray) jsonObject.get("data");
long linesAdded = processLines(data);
totalItemsInserted = totalItemsInserted + linesAdded;
File f = new File(jsonFile);
//System.out.println("File "+ f.getName() +" added " + linesAdded + " items. Curent Total:" + totalItemsInserted);
log.info("File "+ f.getName() +" has "+ data.size() +"items and added " + linesAdded + " items. Curent Total:" + totalItemsInserted);
if(moveFiles){
moveFile(f.getName());
}
} catch (IOException | ParseException | java.text.ParseException e) {
e.printStackTrace();
}
}
Как я могу изменить свой код, чтобы избежать этой ошибки, и если есть способ разблокировать файлы.
Спасибо за помощь