1

PCからAndroidフォンに写真を送信しようとしていますが、写真の送信に問題があります。ここに画像を送信しているJavaアプリケーションのコードを投稿しています。

 public void send(OutputStream os) throws Exception{
  // sendfile
  File myFile = new File ("E:\\a.png");
  System.out.println("the file is read");
  byte [] mybytearray  = new byte [(int)myFile.length()+1];
  FileInputStream fis = new FileInputStream(myFile);
  BufferedInputStream bis = new BufferedInputStream(fis);
  bis.read(mybytearray,0,mybytearray.length);
  System.out.println("Sending...");
  os.write(mybytearray,0,mybytearray.length);
  os.flush();
  }

上記のコードは、ポートにファイルを書き込むだけです。

実際にそのファイルを受け取る Android コードを次に示します。ループが開始し、終了しません。ポートへの接続は正しく、文字列を送受信できます

     public Bitmap receiveFile(InputStream is) throws Exception{
     String baseDir =     Environment.getExternalStorageDirectory().getAbsolutePath();
        String fileName = "myFile.png";
        String imageInSD = baseDir + File.separator + fileName;
      int filesize=6022386;
      int bytesRead;
      int current = 0;
      byte [] mybytearray  = new byte [filesize];

        FileOutputStream fos = new FileOutputStream(imageInSD);
        BufferedOutputStream bos = new BufferedOutputStream(fos);
        bytesRead = is.read(mybytearray,0,mybytearray.length);
        current = bytesRead;


        do {
           bytesRead =
              is.read(mybytearray, current, (mybytearray.length-current));
           if(bytesRead >= 0) current += bytesRead;

        } while(bytesRead != -1);

        bos.write(mybytearray, 0 , current);  
        bos.flush();
        bos.close();
        return null;
  }

写真を共有する他の方法も親切に提案してください

4

1 に答える 1

0

この行が問題です:

       if(bytesRead >= 0) current += bytesRead;

0TCP ソケットからバイトを受信すると、相手側が接続を閉じたことを意味するため、これ以上読み取るものはありません。その時点でループを終了します。

于 2012-12-18T15:02:09.247 に答える