遇到的错误如下:
java.net.UnknownHostException:
at jcifs.UniAddress.getAllByName(UniAddress.java:315)
at jcifs.smb.SmbFile.getFirstAddress(SmbFile.java:864)
at jcifs.smb.SmbFile.connect(SmbFile.java:951)
处理方法:
修改
SmbFile smb = new SmbFile(smburl);
为
NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication(null, uname, upwd);
SmbFile smb = new SmbFile(smburl,auth);
完整代码如下:
String ip = "192.168.1.1";
String uname = "uname";
String upwd = "upwd";
NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication(null, uname, upwd);
//通过smb拷贝文件到局域网文件夹
String smburl = "smb://"+ip+"/test/";
BufferedReader br = null;
BufferedWriter bakbw = null;
try{
SmbFile smb = new SmbFile(smburl,auth);
smb.connect();
String fileurl = smburl + "test.txt";
String bakfileurl = smburl + "test-bak.txt";
SmbFile smbFile = new SmbFile(fileurl,auth);
SmbFile baksmbFile = new SmbFile(bakfileurl,auth);
br = new BufferedReader(new InputStreamReader(new SmbFileInputStream(smbFile)));
bakbw = new BufferedWriter(new OutputStreamWriter(new SmbFileOutputStream(baksmbFile)));
String temp = "";
while((temp = br.readLine()) != null){
bakbw.write(temp+"\r\n");
}
}catch (Exception e){
e.printStackTrace();
}finally{
try{
if(null != br){
br.close();
}
if(null != bakbw){
bakbw.close();
}
}catch(Exception e){
e.printStackTrace();
}
}