我希望使用Java访问远程服务器,访问文件并保持文件更新,或者更新服务器上的文件。
是否有一种使用username @ host和password访问远程服务器的简单方法,这样我就可以上传和下载文件了?
由于
答案 0 :(得分:0)
您可以使用JSch远程通过ssh访问文件。
答案 1 :(得分:0)
使用适当的工具:rsync
答案 2 :(得分:0)
如果您想在打开ssh连接时连接到计算机, 要运行OS命令,您可以使用trilead。 这是打开连接的方法的示例。
public static Connection newConnectionNoPassword(String host, String username, File privateKey) {
Connection newConn = new Connection(host);
try {
newConn.connect(); // Ignoring ConnectionInfo returned value.
//If the authentication was successful the authenticated connection will be returend
if ( newConn.authenticateWithPublicKey(username, privateKey, null)){
return newConn;
}else{
newConn.close();
return null;
}
} catch (IOException ioe) {
newConn.close();
ioe.printStackTrace();
return null;
}
}
如果您使用maven,可以通过向pom.xml添加以下依赖项来获取它:
<dependency>
<groupId>com.trilead</groupId>
<artifactId>trilead-ssh2</artifactId>
<version>build213-svnkit-1.3-patch</version>
</dependency>
为了将\下载文件从\上传到服务器,您可以使用trilead SCPClient。 以下是将文件从远程服务器下载到本地文件夹的示例:
public void downloadFiles(String[] remoteFiles, String localDir) throws IllegalArgumentException, IOException {
checkNotEmpty(localDir);
checkNotEmpty(remoteFiles);
File dir = new File(localDir);
if (!dir.exists() || !dir.mkdirs()) {
throw new IOException("Failed to create local directory : " + localDir);
}
SCPClient scp = new SCPClient(this.conn);
try {
scp.get(remoteFiles, localDir);
} catch (IOException e) {
throw new IOException("Failed to copy remote files to local folder", e);
}
}
希望有所帮助......