java获取局域网其他机器上的共享文件
导入依赖 jcifs
<dependency><groupId>jcifs</groupId><artifactId>jcifs</artifactId><version>1.3.17</version></dependency>
windows启用smb服务
在控制面板->程序和功能->启用或关闭Windows功能->启用smb服务,重启电脑生效。
给windows电脑设置用户名和密码
注意:需不需要用户名密码这是必须要知道的,不然无法读取,可以自己测试一下,(ctrl+r 输入://192.168.2.188 回车,如果需要账户名密码的话,会弹出一个对话框的)
测试代码
public static void main(String[] args) throws IOException {//在192.168.2.188的电脑上,用户名为:Administrator,密码为:123456SmbFile file = new SmbFile("smb://Administrator:123456@192.168.2.188/test123/test.txt");///在192.168.2.188的电脑上,没有用户名和密码/// SmbFile file = new SmbFile("smb://192.168.2.188/test123");SmbFileInputStream in = new SmbFileInputStream(file);byte bt[] = new byte[1024];int c;while ((c = in.read(bt)) != -1) {System.out.println("开始从192.168.2.188电脑上面读取数据");}System.out.println(new String(bt, "gb2312"));}
获取文件夹最新的文件名字
public static void main(String[] args) throws IOException {String url="smb://Administrator:123456@192.168.2.188/test123/";SmbFile file;try {file = new SmbFile(url);if(file.exists()){SmbFile[] files = file.listFiles();for (int i = 0; i < files.length; i++) {for (int j = i + 1; j < files.length; j++) {if (files[i].getLastModified() < files[j].getLastModified()) {SmbFile temp = files[j];files[j] = files[i];files[i] = temp;}}}System.out.println(files[0].getName());}} catch (MalformedURLException e) {e.printStackTrace();} catch (SmbException e) {e.printStackTrace();}}
