NFS java 操作和SMB服务器的操作

来源:互联网 发布:c语言读文本文件 编辑:程序博客网 时间:2024/05/02 01:18
package NFS;


import java.io.File;
import java.io.IOException;


import com.sun.nfs.XFileExtensionAccessor;
import com.sun.xfile.XFile;
import com.sun.xfile.XFileInputStream;
import com.sun.xfile.XFileOutputStream;


public class Snippet {
public void downloadViaNFS(final String ip, final String user,
final String password, final String dir) {
System.out.println("NFS download begin!");


try {
String url = "nfs://" + ip + "/" + dir;
System.out.println(url);
XFile xf = new XFile(url);
if (xf.exists()) {
System.out.println("URL is OK!");
} else {
System.out.println("URL is Bad!");
return;
}
XFileExtensionAccessor nfsx = (XFileExtensionAccessor) xf
.getExtensionAccessor();
if (!nfsx.loginPCNFSD(ip, user, password)) {
System.out.println("login failed!");
return;
}
String[] fileList = xf.list();
XFile temp = null;
long startTime = System.currentTimeMillis();
int filesz = 0;
for (String file : fileList) {
temp = new XFile(url + "/" + file);
XFileInputStream in = new XFileInputStream(temp);
XFileOutputStream out = new XFileOutputStream("E:\\test"
+ File.separator + file);
int c;
byte[] buf = new byte[8196];
while ((c = in.read(buf)) > 0) {
filesz += c;
out.write(buf, 0, c);
}
System.out.println("File is downloaded!");
in.close();
out.close();
/*
* if (temp.canWrite()) { temp.delete(); } else { }
*/
}
long endTime = System.currentTimeMillis();
long timeDiff = endTime - startTime;
int rate = (int) ((filesz / 1000) / (timeDiff / 1000.0));
System.out.println("rate =" + rate);
} catch (IOException e) {
e.printStackTrace();
}
}


public static void main(String[] args) {
String ip = "192.168.1.175";
String user = "root";
String password = "root3306";
String dir = "tmp/sheldon";
Snippet s = new Snippet();
s.downloadViaNFS(ip, user, password, dir);
}

}

smb服务器的操作

package NFS;




import java.io.BufferedInputStream;  
import java.io.BufferedOutputStream;  
import java.io.File;  
import java.io.FileInputStream;  
import java.io.FileOutputStream;  
import java.io.IOException;  
import java.io.InputStream;  
import java.io.OutputStream;  
import java.net.MalformedURLException;  


import jcifs.smb.SmbFile;  
import jcifs.smb.SmbFileInputStream;  
import jcifs.smb.SmbFileOutputStream;  


public class RemoteAccessDataSMB {  


  /** 
   * @param args 
   * @throws IOException  
   */  
  public static void main(String[] args) throws IOException {  
      smbGet1("smb://192.168.75.204/test/新建 文本文档.txt");  
      smbGet("smb://192.168.75.204/test/新建 文本文档.txt","e:/");  
  }  


  /** 
   * 方法一: 
   *  
   * @param remoteUrl 
   *            远程路径 smb://192.168.75.204/test/新建 文本文档.txt 
   * @throws IOException 
   */  
  public static void smbGet1(String remoteUrl) throws IOException {  
      SmbFile smbFile = new SmbFile(remoteUrl);  
      int length = smbFile.getContentLength();// 得到文件的大小  
      byte buffer[] = new byte[length];  
      SmbFileInputStream in = new SmbFileInputStream(smbFile);  
      // 建立smb文件输入流  
      while ((in.read(buffer)) != -1) {  


          System.out.write(buffer);  
          System.out.println(buffer.length);  
      }  
      in.close();  
  }  


  // 从共享目录下载文件  
  /** 
   * 方法二: 
   *    路径格式:smb://192.168.75.204/test/新建 文本文档.txt 
   *              smb://username:password@192.168.0.77/test 
   * @param remoteUrl 
   *            远程路径 
   * @param localDir 
   *            要写入的本地路径 
   */  
  public static void smbGet(String remoteUrl, String localDir) {  
      InputStream in = null;  
      OutputStream out = null;  
      try {  
          SmbFile remoteFile = new SmbFile(remoteUrl);  
          if (remoteFile == null) {  
              System.out.println("共享文件不存在");  
              return;  
          }  
          String fileName = remoteFile.getName();  
          File localFile = new File(localDir + File.separator + fileName);  
          in = new BufferedInputStream(new SmbFileInputStream(remoteFile));  
          out = new BufferedOutputStream(new FileOutputStream(localFile));  
          byte[] buffer = new byte[1024];  
          while (in.read(buffer) != -1) {  
              out.write(buffer);  
              buffer = new byte[1024];  
          }  
      } catch (Exception e) {  
          e.printStackTrace();  
      } finally {  
          try {  
              out.close();  
              in.close();  
          } catch (IOException e) {  
              e.printStackTrace();  
          }  
      }  
  }  


  // 向共享目录上传文件  
  public static void smbPut(String remoteUrl, String localFilePath) {  
      InputStream in = null;  
      OutputStream out = null;  
      try {  
          File localFile = new File(localFilePath);  


          String fileName = localFile.getName();  
          SmbFile remoteFile = new SmbFile(remoteUrl + "/" + fileName);  
          in = new BufferedInputStream(new FileInputStream(localFile));  
          out = new BufferedOutputStream(new SmbFileOutputStream(remoteFile));  
          byte[] buffer = new byte[1024];  
          while (in.read(buffer) != -1) {  
              out.write(buffer);  
              buffer = new byte[1024];  
          }  
      } catch (Exception e) {  
          e.printStackTrace();  
      } finally {  
          try {  
              out.close();  
              in.close();  
          } catch (IOException e) {  
              e.printStackTrace();  
          }  
      }  
  }  


  // 远程url smb://192.168.0.77/test  
  // 如果需要用户名密码就这样:  
  // smb://username:password@192.168.0.77/test  


}  




0 0