gpt4 book ai didi

java - 我正在将图片文件从电脑发送到 Android 手机,两者都通过套接字连接到同一 WLAN

转载 作者:行者123 更新时间:2023-12-01 04:57:04 26 4
gpt4 key购买 nike

我正在尝试将图片从电脑发送到 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;
}

请建议任何其他分享图片的方式

最佳答案

这一行是问题所在:

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

当您从 TCP 套接字接收到 0 字节时,这意味着另一端已关闭连接,因此没有更多内容可读取。此时退出循环。

关于java - 我正在将图片文件从电脑发送到 Android 手机,两者都通过套接字连接到同一 WLAN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13935467/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com