SambaJava API
2023-09-14 08:57:00 时间
做一个 backup
package net.jnas; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.net.MalformedURLException; import jcifs.Config; import jcifs.smb.NtlmPasswordAuthentication; import jcifs.smb.SmbAuthException; import jcifs.smb.SmbException; import jcifs.smb.SmbFile; import jcifs.smb.SmbFileInputStream; import jcifs.smb.SmbFileOutputStream; import org.apache.log4j.Logger; public class SambaJavaApi { //jcifs.smb.SmbAuthException: Logon failure: unknown user name or bad password. //jcifs.smb.SmbException: Access is denied. //寫得時候,smb_dir必須是文件名,而不是路徑 private static String smb_dir = "lnas_service/aa/aaa.doc";//"/home/test/share"; private static String password = "888888"; private static String user = "lk2"; private static String ip = "192.168.4.49"; private Logger logger = Logger.getLogger(this.getClass().getName()); private String local_tempDir = "E:\\work\\samba\\test\\11.doc"; public static void main(String[] args) { SambaJavaApi sa = new SambaJavaApi(); user = "admin"; password = "admin"; sa.uploadViaShare(ip , user, password, smb_dir); } public void uploadViaShare(final String ip,final String user,final String password,final String dir) { logger.debug("Share(SMB) download!"); String newDir = dir; String url = ""; FileInputStream fos = null; SmbFileOutputStream smbIs = null; byte [] buffer = new byte[8192]; int readBytes = 0; int totalBytes = 0; if (!dir.endsWith("/")) //directory must end with "/" newDir = dir+"/"; url = "smb://"+user+":"+password+"@"+ip+""+newDir; NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication(ip, user, password); long startTime = System.currentTimeMillis(); try { url = "smb://"+ip +"/"+ dir; System.out.println(url); Config.setProperty("jcifs.netbios.wins", ip); SmbFile shareDir = new SmbFile(url, auth); shareDir.connect(); // SmbFile shareDir = new SmbFile(url); if(shareDir.isDirectory()) { smbIs = new SmbFileOutputStream(shareDir); fos = new FileInputStream(new File(local_tempDir)); while((readBytes = fos.read(buffer)) > 0 ) { smbIs.write(buffer,0,readBytes); totalBytes += readBytes; } smbIs.close(); fos.close(); long endTime = System.currentTimeMillis(); long timeTaken = endTime-startTime; logger.debug(totalBytes +"bytes downloaded in " + timeTaken/1000 + " seconds at "+ (( totalBytes / 1000 ) / Math.max( 1, ( timeTaken / 1000 ))) + "Kb/sec"); } }catch(MalformedURLException urle) { logger.debug("Incorrect URL format!"); }catch (SmbException smbe) { smbe.printStackTrace(); logger.debug(this.getClass().getName()+"||"+smbe.getMessage()); }catch(IOException ioe) { ioe.printStackTrace(); logger.debug(this.getClass().getName()+"||"+ioe.getMessage()); }finally { try { smbIs.close(); fos.close(); }catch(Exception smbe) { logger.debug(this.getClass().getName()+"||"+smbe.getMessage()); } } } public void downloadViaShare(final String ip,final String user,final String password,final String dir) { logger.debug("Share(SMB) download!"); String newDir = dir; String url = ""; SmbFile [] fileList = null; FileOutputStream fos = null; SmbFileInputStream smbIs = null; byte [] buffer = new byte[8192]; int readBytes = 0; int totalBytes = 0; if (!dir.endsWith("/")) //directory must end with "/" newDir = dir+"/"; url = "smb://"+user+":"+password+"@"+ip+""+newDir; NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication(ip, user, password); long startTime = System.currentTimeMillis(); try { url = "smb://"+ip +"/"+ dir; System.out.println(url); // final NtlmPasswordAuthentication AUTH = new NtlmPasswordAuthentication("domainname", "username", "password"); Config.setProperty("jcifs.netbios.wins", ip); // Properties props = new Properties(); // InputStream in = new SmbFileInputStream(new SmbFile("smb://10.10.1.1:445/rootfolder/path/filename.properties", AUTH)); // props.load(in); SmbFile shareDir = new SmbFile(url, auth); shareDir.connect(); // SmbFile shareDir = new SmbFile(url); if(shareDir.isDirectory()) { fileList = shareDir.listFiles(); for(int i=0;i<fileList.length;i++) { if(fileList[i].isFile()) { smbIs = new SmbFileInputStream((SmbFile)fileList[i]); fos = new FileOutputStream(new File(local_tempDir +File.separator+fileList[i].getName())); while((readBytes = smbIs.read(buffer)) > 0 ) { fos.write(buffer,0,readBytes); totalBytes += readBytes; } smbIs.close(); fos.close(); // break; // logger.debug(fileList[i].getName() + " is downloaded!"); // try // { // fileList[i].delete(); // }catch(SmbAuthException smbae ) // { // logger.debug(fileList[i].getName()+" can not be deleted!"); // } } } long endTime = System.currentTimeMillis(); long timeTaken = endTime-startTime; logger.debug(totalBytes +"bytes downloaded in " + timeTaken/1000 + " seconds at "+ (( totalBytes / 1000 ) / Math.max( 1, ( timeTaken / 1000 ))) + "Kb/sec"); } }catch(MalformedURLException urle) { logger.debug("Incorrect URL format!"); }catch (SmbException smbe) { smbe.printStackTrace(); logger.debug(this.getClass().getName()+"||"+smbe.getMessage()); }catch(IOException ioe) { ioe.printStackTrace(); logger.debug(this.getClass().getName()+"||"+ioe.getMessage()); }finally { try { smbIs.close(); fos.close(); }catch(Exception smbe) { logger.debug(this.getClass().getName()+"||"+smbe.getMessage()); } } } // private void Asasf() { // // TODO Auto-generated method stub // String strprog = "STRING CREATED| "; //debug log string // try { // strprog += "NTLM| "; // NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication("username:password"); // strprog += "SMB| "; // SmbFile file = new SmbFile("smb://<pcname>/foldername/filename.txt",auth); // // strprog += "EXIST| "; // String there = String.valueOf(file.exists()); // // strprog += "View| "; // TextView pp; // pp = (TextView) findViewById(R.id.tv); // pp.setText(there); // // // // } catch (Exception e) { // // TODO Auto-generated catch block // strprog += "ERROR! "; // TextView ll; // ll = (TextView) findViewById(R.id.tv); // // // ll.setText(strprog + e.getStackTrace().toString() + " " + e.getMessage() + " " + e.getLocalizedMessage() ); // } // } }
相关文章
- 学习seajs模块定义和模块引用相关API
- uni-app api:扫描二维码(hbuilderx 3.6.18)
- Rest API的简单应用
- Atitit 音频技术实践 艾提拉著 目录 1. 常用的通用技术2 1.1. Nlp 云识别 api 爬虫技术2 1.2. Html解析2 1.3. ffmpege2 1.4. jfug
- Kubernetes API server工作原理
- 【ChatGPT】开源学术科研专用 ChatGPT 来了——GitHub斩获 14k+ 星(需要API_SECRET_KEY)
- 0602-Zuul构建API Gateway-Zuul Http Client、cookie、header
- Windows API一日一练(40)CreateRectRgn和CombineRgn函数
- RFSoC应用笔记 - RF数据转换器 -17- API使用指南之ADC状态指示函数
- 6-4Table API and SQL的使用.