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; } } }