(2)

- public
void downloadViaShare(final String ip,final String user,final String password,final String "color: #000000;">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; -
-
long startTime = System.currentTimeMillis(); -
try { -
SmbFile shareDir = new SmbFile(url); -
if(shareDir.isDirectory()) -
{ -
fileList = shareDir.listFiles(); -
for(int i=0;i -
{ -
if(fileList[i].isFile()) -
{ -
smbIs = new SmbFileInputStream((SmbFile)fileList[i]); -
fos = new FileOutputStream(new File(tempDir+File.separator+fileList[i].getName())); -
while((readBytes = smbIs.read(buffer)) > 0 ) -
{ -
fos.write(buffer,0,readBytes); -
totalBytes += readBytes; -
} -
smbIs.close(); -
fos.close(); -
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()); -
} -
} -
-
}
二,NFS
ro 只读访问
rw 读写访问sync 所有数据在请求时写入共享
async nfs在写入数据前可以响应请求
secure nfs通过1024以下的安全TCP/IP端口发送
insecure nfs通过1024以上的端口发送
wdelay 如果多个用户要写入nfs目录,则归组写入(默认)
no_wdelay 如果多个用户要写入nfs目录,则立即写入,当使用async时,无需此设置。
hide 在nfs共享目录中不共享其子目录
no_hide 共享nfs目录的子目录
subtree_check 如果共享/usr/bin之类的子目录时,强制nfs检查父目录的权限(默认)
no_subtree_check 和上面相对,不检查父目录权限
all_squash 共享文件的UID和GID映射匿名用户anonymous,适合公用目录。
no_all_squash 保留共享文件的UID和GID(默认)
root_squash root用户的所有请求映射成如anonymous用户一样的权限(默认)
no_root_squas root用户具有根目录的完全管理访问权限
anonuid=xxx 指定nfs服务器/etc/passwd文件中匿名用户的UID
anongid=xxx 指定nfs服务器/etc/passwd文件中匿名用户的GID
d)
e)
(2)
话说这段代码虽然很简单,却费了我不少力气。JDK本身是没有访问NFS的功能,只能用第三方包了,google后发觉用java访问NFS的应用很少,竟然没找到可用的示例,远不如samba那么多,而且只有sun的webnfs可用来访问NFS,在http://yanfs.dev.java.net