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,密码为:123456
SmbFile 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();
}
}