У меня есть приложение Java, которое обрабатывает содержимое файла, а затем мне нужно переместить его в другое место.java file.renameTo() failed in unix
Это, как я прочитал файл:
String filePath = new String("foo.bar");
String fileContents = new String("");
char[] myBuffer = new char[chunkSize];
int bytesRead = 0;
BufferedReader in;
try {
FileReader fr = new FileReader(filePath);
in = new BufferedReader(fr);
try {
while ((bytesRead = in.read(myBuffer,0,chunkSize)) != -1)
{
//System.out.println("Read " + bytesRead + " bytes. They were: " + new String(myBuffer));
fileContents+= new String(myBuffer).substring(0, bytesRead);
}
// close the stream as I don't need it anymore. (If I don't close it, then java would hold the file open thus preventing the subsequent move of the file)
in.close();
fr.close();
} catch (IOException e) {
e.printStackTrace();
return null;
}
} catch (FileNotFoundException e) {
e.printStackTrace();
return null;
}
файл должен быть закрыт, поскольку я заканчиваю как входной поток и чтения файлов.
Тогда после этого я пытаюсь переместить файл в другой каталог, используя File.renameTo(newFileName);
, но это не удается (под UNIX !, под окнами он работает отлично)
Сразу после движения терпит неудачу, я могу проверить, могу ли я создать файл newFileName
и могу ли я удалить исходный файл. Новый файл будет создан, а исходный файл не будет удален. Интересно, что я могу удалить исходный файл из командной строки во время работы приложения (сразу после сбоя).
Любая идея, почему это или любая альтернатива?
Подробнее: Я работаю под UNIX, и я обязан использовать java 1.6 для устаревших причин (поэтому я не могу вернуться к Files.move(), который поддерживается начиная с java 1.7).
Вы перемещаете его в другую файловую систему/NFS? – dogbane
Вы проверили атрибут файлов, созданных вашим кодом, может быть, JVM не имеет разрешения на доступ к файлу, или ваш код приложения работает как псевдоним, который не имеет доступа для чтения/записи? –
@dogbane no Я фактически перемещаю его в подпапку папки, в которой создается исходный файл (существует подпапка). –