[英]Wrong transfer of a file over Java socket
我正在嘗試將XML文件從台式機服務器傳輸到Android客戶端,但是在Android設備上卻只有整個文件的1024個字節。 我的代碼是:
byte[] mybytearray = new byte[(int) filePianificazione.length()];
BufferedInputStream bufferedInputStream = new BufferedInputStream(new FileInputStream(filePianificazione));
bufferedInputStream.read(mybytearray, 0, mybytearray.length);
bufferedInputStream.close();
out.write(mybytearray, 0, mybytearray.length);
out.flush();
byte[] mybytearray = new byte[1024];
FileOutputStream fos = new FileOutputStream(file.getAbsolutePath());
BufferedOutputStream bos = new BufferedOutputStream(fos);
int bytesRead = in.read(mybytearray, 0, mybytearray.length);
bos.write(mybytearray, 0, bytesRead);
bos.close();
首先,您聲明byte[] mybytearray = new byte[1024];
然后,您正在做一個
int bytesRead = in.read(mybytearray, 0, mybytearray.length);
bos.write(mybytearray, 0, bytesRead);
在讀取的代碼(Android客戶端)中,您僅讀取1024字節,因為這是輸入緩沖區的長度,並且只讀取一次。 您需要有一個while
循環,該循環將繼續從輸入流中讀取,然后將其寫出,直到達到EOF。
就像是:
while(in.available() > 0)
{
int bytesRead = in.read(mybytearray, 0, mybytearray.length);
bos.write(mybytearray, 0, bytesRead);
}
在Java中復制流的規范方法如下:
while ((count = in.read(buffer)) > 0)
{
out.write(buffer, 0, count);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.