为了账号安全,请及时绑定邮箱和手机立即绑定

socket编程时用ObjectInputstream出现了libcore.io.streams.

socket编程时用ObjectInputstream出现了libcore.io.streams.

噜噜哒 2019-03-19 13:15:59
具体是写一个Android和PC文件共享的小项目Android端(以下为a).PC端(以下为p),a和p连接上后,a将p上的根目录显示,点击进入文件夹,我做的处理是,如果点击(发送被点击文件的路径)的是文件夹,那么就打开文件夹,如果点击的是文件就直接下载,而文件夹能直接打开,但是点击文件就直接抛io异常p(服务器)的部分代码:try{    ObjectOutputStream oos = new ObjectOutputStream(socket.getOutputStream());    DataInputStream dis = new DataInputStream(socket.getInputStream());    String filePath = dis.readUTF(); //接收android端点击的文件的路径    File selectFile = new File(filePath);    if (selectFile.isDirectory()) // 文件夹, 就把文件夹内的所有子文件信息发送回去    {        oos.writeInt(1); // 发送是文件夹的标识        // 略...    }    else// 文件就直接发送该文件    {        oos.writeInt(0); // 发送非文件夹的标识        oos.writeUTF(selectFile.getName());        System.out.println("正在下载" + selectFile.getName());        FileInputStream fis = new FileInputStream(selectFile);        DataOutputStream dos = new DataOutputStream(socket.getOutputStream());        int len = 0;        byte []buff = new byte[1024 * 1024];        while ((len = fis.read(buff)) != -1)        {            dos.write(buff, 0, len);        }        fis.close();    }    socket.close();}catch (IOException e){    e.printStackTrace();}a(客户端)部分代码DataOutputStream dos = new DataOutputStream(socket.getOutputStream());ObjectInputStream ois = new ObjectInputStream(socket.getInputStream());dos.writeUTF(path); // 发送被点击文件的路径int isDir = ois.readInt(); // 接收是不是文件夹的标识 (这里如果点击文件夹就没问题, 但是如果是点击文件, 就在这里报错)if (isDir == 1){    // 略} else{    String fileName = ois.readUTF();    String filePath = ConnectActivity.myPath + "/download/" + fileName;    Log.i("path2", filePath);    FileOutputStream fos = new FileOutputStream(new File(filePath));    DataInputStream dis = new DataInputStream(socket.getInputStream());    int len = 0;    byte[] buff = new byte[1024 * 1024];    while ((len = dis.read(buff)) != -1)    {        fos.write(buff, 0, len);    }    Log.i("path2", filePath);    fos.close();}求解???
查看完整描述

1 回答

?
蓝山帝景

TA贡献1843条经验 获得超7个赞

write要flush!
write要flush!
write要flush!

查看完整回答
反对 回复 2019-04-22
  • 1 回答
  • 0 关注
  • 378 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信