Android 使用 JCIFS 访问共享文件

1.访问共享文件,一定要写在”子线程”,不要写在主线程里面,不然一直闪退。为了这个不知道掉了几根头发

new Thread(new Runnable() {
                        @Override

                        public void run() {
                            SmbToUpdate();
                        }
                    }).start();

  

public  void  SmbToUpdate()
    {

        InputStream in = null ;
        ByteArrayOutputStream out = null ;
        try {
            NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication("smb://192.168.XX.XX","用户名", "密码");
            SmbFile remoteFile = new SmbFile("smb://192.168.XX.XX/Share/AutoUpdater.xml", auth);
            remoteFile.connect(); //尝试连接
            in = new BufferedInputStream(new SmbFileInputStream(remoteFile));
            out = new ByteArrayOutputStream((int)remoteFile.length());
            //读取文件内容
            byte[] buffer = new byte[4096];
            int len = 0; //Read length
            while ((len = in.read(buffer, 0, buffer.length)) != - 1) {
                out.write(buffer, 0, len);
            }
            out.flush(); //方法刷新此输出流并强制将所有缓冲的输出字节被写出
            byte[] data= out.toByteArray();

            String Xml = new String(data);
        }
        catch (Exception e) {
            String msg = "Download a remote file error: " + e.getLocalizedMessage();
            System.out.println(msg);
        }
        finally {
            try {
                if(out != null) {
                    out.close();
                }
                if(in != null) {
                    in.close();
                }
            }
            catch (Exception e) {
                int a=1;
            }
        }
    }

 

posted @ 2021-10-25 19:22  朱志  阅读(330)  评论(0编辑  收藏  举报