В Java я работаю с кодом, работающим под WinXP, который создает такой файл:
public synchronized void store(Properties props, byte[] data) {
try {
File file = filenameBasedOnProperties(props);
if ( file.exists() ) {
return;
}
File temp = File.createTempFile("tempfile", null);
FileOutputStream out = new FileOutputStream(temp);
out.write(data);
out.flush();
out.close();
file.getParentFile().mkdirs();
temp.renameTo(file);
}
catch (IOException ex) {
// Complain and whine and stuff
}
}
Иногда, когда файл создается таким образом, он практически полностью недоступен извне кода (хотя код, отвечающий за открытие и чтение файла, не имеет проблем), даже когда приложение не запущено. При доступе через Проводник Windows я не могу переместить, переименовать, удалить или даже открыть файл. Под Cygwin я получаю следующее, когда я ls -l
каталог:
ls: cannot access [big-honkin-filename]
total 0
?????????? ? ? ? ? ? [big-honkin-filename]
Как и предполагалось, имена файлов большие, но не более 260 символов для XP (хотя они чуть более 200 символов).
Чтобы еще больше добавить, что мой компьютер просто хочет, чтобы я чувствовал себя глупо, иногда файлы, созданные этим кодом, совершенно нормальны. Единственный шаблон, который я обнаружил, состоит в том, что как только один файл в каталоге «блокируется», остальные закручиваются.
Кто-нибудь когда-нибудь сталкивался с чем-то подобным или имел какое-либо представление о том, что здесь происходит?