我正在接收來自服務器的文件,並且在客戶端中我想將此文件保存到目錄。這裏是做保存文件爲什麼我在文件中收到垃圾數據?
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();
功能convertToByteArray
的工作代碼如下
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
文件名Serializable對象。該類如下 -
public class FileDetails implements Serializable{
public File file;
public String fileExtension;
public String source;
public String destination;
}
現在問題是我得到垃圾數據在客戶端保存的文件。爲了測試我是否從服務器接收純數據,我在控制檯中打印了文件的內容並獲得了預期結果。但是當我在指定的目錄中打開保存的文件時,我得到一些中文腳本我該怎麼辦?請幫助我。
不要將文件讀入字節[]。如果您不能100%確定大小,可能會導致OutOfMemoryErrors –
我假設要保存的文件在1KB以內。如果我想變得更強壯,我該怎麼辦?在這種特殊情況下字節數組的交替是什麼? – Burro