Я не особенно разбираюсь в Java.JVM_Close возвращается -1 при закрытии PrintStream
Я преобразовываю массив байтов в строку (каждый байт с десятичным представлением), а затем записываю в файл. Вот минимальный пример, который воспроизводит эту проблему, что у меня (я оставил файл именования вещи в, только в случае, если это связано):
public class PacketWriter {
public static void writeBytes(byte[] in) {
Calendar cal = Calendar.getInstance();
cal.getTime();
SimpleDateFormat sdf = new SimpleDateFormat("ddmmyyHHmmss");
PrintStream out = null;
File outFile = null;
try {
outFile = new File("recpacket"+sdf.format(cal.getTime())+".txt");
outFile.createNewFile(); // also checks for existence of file alre ady
out = new PrintStream(new FileOutputStream(outFile,false));
System.out.println(Arrays.toString(in));
out.print(Arrays.toString(in));
out.flush();
System.out.println("Did the writing!");
} catch (FileNotFoundException e) {
System.err.println("Packet output file not found.");
} catch (IOException e) {
System.err.println("Could not write packets (I/O error).");
}
finally {
System.out.println("Closing...");
if (out != null) out.close();
System.out.println("Closed.");
}
}
}
Когда я называю PacketWriter.writeBytes(/* some nonempty byte array */)
я получаю следующий результат:
... array ...
Did the writing!
Closing...
JVM_Close returned -1
Closed.
записан на стандартный вывод.
Файл пуст по возвращении и не содержит строку, которую я хочу.
Что случилось?
Проверки вы входные данные для функции writeBytes, потому что я пытался сделать это с вашим кодом он работает нормально, и данные были также написан в файле – Vijay
Спасибо. Ввод в порядке - он успешно печатает массив в stdout. Интересно, что это ошибка разрешения файлов? Я запускаю JVM как root (по другим причинам), так может ли это быть частью проблемы? – Froskoy