0
У меня есть массив, перечисленных ниже:Дать определенное количество байтов в файле
Я хочу, чтобы записать эти байты в файле пока файл не достигнет размера 1029 байт. Есть идеи?
Я попробовал этот код, но это не похоже на работу:
public static byte[] aSnouty = {97, 98, 99, 100, 101, 102, 103, 104, 105, 49, 45, 50, 51, 52, 53};
File file = new File(filename);
FileOutputStream fos = null;
try {
fos = new FileOutputStream(file);
do {
fos.write(aSnouty);
} while(file.length()!=1029);
} catch(Exception ex) {
ex.printStackTrace();
}
Запись 15 байт за один раз никогда не получит файл размером 1029 байт. 15 в 1029 не идет, это невозможно. Если вы хотите остановиться, когда оно прошло * прошлое * 1029 байт, test 'while (file.length() <1029)', в противном случае вам нужно будет добавить еще несколько объяснений того, что должно произойти, и что происходит. – TessellatingHeckler
Не только то, что сказал @TessellatingHeckler, но вы также не ['flush'] (https://docs.oracle.com/javase/8/docs/api/java/io/OutputStream.html#flush--) поток вывода, что означает, что вы не контролируете, когда данные записываются на диск. Это означает, что вызов 'file.length()' не дает вам длину файла с новыми данными. – Powerlord
@Powerlord Должен fos.close(); идти сразу после цикла? – alkis1995