0

デスクトップサーバーからAndroidクライアントにXMLファイルを転送しようとしていますが、Androidデバイスではファイル全体の1024バイトしか取得できません。私のコードは次のとおりです。


デスクトップサーバーからAndroidクライアントへのファイルの送信:

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();

Androidクライアントからサーバーへのファイルの受信:

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();
4

2 に答える 2

1

まず宣言しますbyte[] mybytearray = new byte[1024];

それからあなたはシングルをやっています

int bytesRead = in.read(mybytearray, 0, mybytearray.length);

bos.write(mybytearray, 0, bytesRead);

読み取りコード (Android クライアント側) では、1024 バイトしか読み取っていません。これは、入力バッファーの長さであり、1 回しか読み取っていないためです。while入力ストリームから読み取り続け、EOF に達するまでそれを書き出すループが必要です。

何かのようなもの:

while(in.available() > 0)
{
    int bytesRead = in.read(mybytearray, 0, mybytearray.length);
    bos.write(mybytearray, 0, bytesRead);
}
于 2012-10-01T20:22:37.217 に答える
0

Java でストリームをコピーする正規の方法は次のとおりです。

while ((count = in.read(buffer)) > 0)
{
  out.write(buffer, 0, count);
}
于 2012-10-02T10:06:42.430 に答える