Я получаю файл с сервера, а на клиенте я хочу сохранить этот файл в каталоге. Вот код, который делает работу экономии Функции convertToByteArray
ФайлаПочему я получаю ненужные данные в файле?
FileDetails obj1= (FileDetails)object;
String str= "A "+obj1.fileExtension+" Received From "+obj1.source;
JOptionPane.showMessageDialog(null,str,"Success", WIDTH, null);
FileOutputStream saveFile = new FileOutputStream("F:\\Download\\"+obj1.fileExtension);
ObjectOutputStream save = new ObjectOutputStream(saveFile);
byte[] buf= convertToByteArray(obj1.file);
save.write(buf);
save.close();
является следующим
private byte[] convertToByteArray(File file){
try{
FileInputStream fis = new FileInputStream(file);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
byte[] buf = new byte[1024];
for (int readNum; (readNum = fis.read(buf)) != -1;) {
bos.write(buf, 0, readNum); //no doubt here is 0
bos.flush();
System.out.println("read " + readNum + " bytes,");
}
byte[] bytes = bos.toByteArray();
return bytes;
} catch (IOException ex) {
ex.printStackTrace();
}
return null;
}
FileDetails
является сериализацией объекта, который содержит файл, который отправляет сервер и имя файла в fileExtension
, Класс следующий:
public class FileDetails implements Serializable{
public File file;
public String fileExtension;
public String source;
public String destination;
}
Теперь проблема в том, что я получаю нежелательные данные в сохраненном файле на стороне клиента. Чтобы проверить, получаю ли я чистые данные с сервера, я распечатал содержимое файла на консоли и получил ожидаемый результат. Но когда я открываю сохраненный файл в указанном каталоге, я получаю некоторые китайские скрипты. Что я могу сделать? Пожалуйста, помогите мне.
Никогда не читайте файлы в байт []. Если вы не можете быть уверены в 100% о размере, вы можете вызвать OutOfMemoryErrors –
Я предполагаю, что файл, который должен быть сохранен, находится в пределах 1 КБ. Если я хочу быть более уверенным, что я могу сделать? Каковы альтернативы массива байтов в данном конкретном случае? – Burro