Код ниже получает массив байтов из HTTP-запроса и сохраняет его в bytes[], окончательные данные будут сохранены в message[].
Я проверяю, содержит ли он заголовок, преобразуя его в String[]. Если это так, я читаю некоторую информацию из заголовка, а затем вырезаю ее, сохраняя байты после заголовка в message[].
Затем я пытаюсь вывести message[] в файл с помощью FileOutputStream, и он немного работает, но сохраняет только 10 КБ информации, одну итерацию цикла while (кажется, перезаписывает), и если я устанавливаю FileOutputStream(file, true) на добавьте информацию, она работает... один раз, затем файл просто добавляется в следующий раз, когда я его запускаю, а это не то, чего я хочу. Как мне записать в один и тот же файл несколько фрагментов байтов на каждой итерации, но при этом полностью перезаписать файл, если я снова запущу программу?
byte bytes[] = new byte[(10*1024)];
while (dis.read(bytes) > 0)
{
//Set all the bytes to the message
byte message[] = bytes;
String string = new String(bytes, "UTF-8");
//Does bytes contain header?
if (string.contains("\r\n\r\n")){
String theByteString[] = string.split("\r\n\r\n");
String theHeader = theByteString[0];
String[] lmTemp = theHeader.split("Last-Modified: ");
String[] lm = lmTemp[1].split("\r\n");
String lastModified = lm[0];
//Cut off the header and save the rest of the data after it
message = theByteString[1].getBytes("UTF-8");
//cache
hm.put(url, lastModified);
}
//Output message[] to file.
File f = new File(hostName + path);
f.getParentFile().mkdirs();
f.createNewFile();
try (FileOutputStream fos = new FileOutputStream(f)) {
fos.write(message);
} catch (IOException ioe) {
ioe.printStackTrace();
}
}
}