java访问nfs服务

xie5263934 2015-06-18 12:10:35
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);
}
}

nfs服务是正常的,但是我的程序一运行打印url为nfs://192.168.1.175/tmp/sheldon,但是创建的XFile类的xf.exists()总是返回false,使用的是jftp-1.52.jar,有没有大神遇到过这样的问题或者做过java访问nfs的例子啊?
...全文
1459 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
jwei0791 2018-01-04
  • 打赏
  • 举报
回复
同问,你的问题后来解决了吗?我也遇这到问题。
a__c__b 2016-02-26
  • 打赏
  • 举报
回复
请问问题解决了吗?
attilax 2015-12-18
  • 打赏
  • 举报
回复
吧权限改下配置改下即可。,
skgary 2015-06-19
  • 打赏
  • 举报
回复
引用 3 楼 xie5263934 的回复:
[quote=引用 2 楼 skgary 的回复:] 直接在操作系统里mount上,用操作系统的路径访问不行么?
因为客户提出了一个需求,比如我的nfs服务是安装在192.168.1.1这个机器上的,而我们的java程序就不一定在哪儿了,有可能在192.168.1.2或者192.168.1.3都有可能,那么客户想知道192.168.1.1机器上的nfs服务是不是好使的?就想使用一段程序去对192.168.1.1上的nfs共享目录做一次文件的上传和下载,来测试nfs服务是不是正常工作的。[/quote] 不用那么复杂,直接在nfs的机器上把nfs mount上。 然后用本地读写的方式进行检查,另,一定要用两个线程,一个负责读写,另一个负责监控读写是否按时结束。
xie5263934 2015-06-18
  • 打赏
  • 举报
回复
引用 2 楼 skgary 的回复:
直接在操作系统里mount上,用操作系统的路径访问不行么?
因为客户提出了一个需求,比如我的nfs服务是安装在192.168.1.1这个机器上的,而我们的java程序就不一定在哪儿了,有可能在192.168.1.2或者192.168.1.3都有可能,那么客户想知道192.168.1.1机器上的nfs服务是不是好使的?就想使用一段程序去对192.168.1.1上的nfs共享目录做一次文件的上传和下载,来测试nfs服务是不是正常工作的。
skgary 2015-06-18
  • 打赏
  • 举报
回复
直接在操作系统里mount上,用操作系统的路径访问不行么?

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧