Java中网络文件传输

现在网络上有两台计算机,如何将电脑A的文件传输到电脑B呢.?
如果要执行这样的传输,那么我们就要使用SSH命令(这里的SSH不是框架技术).
Java中为了方便程序编程,已经对这种协议和命令进行了封装,关于这个协议的jar文件是ganymed-ssh2-build210.jar.

我在网上得到jar文件的一份原代码.如下
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import org.apache.log4j.Logger;
import ch.ethz.ssh2.Connection;
import ch.ethz.ssh2.SCPClient;
import ch.ethz.ssh2.Session;
import ch.ethz.ssh2.StreamGobbler;
public class CommandRunner {
private static final Logger logger = Logger.getLogger(CommandRunner.class);
public static void scpGet(String host, String username, String password,
   String remoteFile, String localDir) throws IOException {
  if (logger.isDebugEnabled()) {
   logger.debug("spc [" + remoteFile + "] from " + host + " to "
     + localDir);
  }
  Connection conn = getOpenedConnection(host, username, password);
  SCPClient client = new SCPClient(conn);
  client.get(remoteFile, localDir);
  conn.close();
}
public static void scpPut(String host, String username, String password,
   String localFile, String remoteDir) throws IOException {
  if (logger.isDebugEnabled()) {
   logger.debug("spc [" + localFile + "] to " + host + remoteDir);
  }
  Connection conn = getOpenedConnection(host, username, password);
  SCPClient client = new SCPClient(conn);
  client.put(localFile, remoteDir);
  conn.close();
}
public static int runSSH(String host, String username, String password,
   String cmd) throws IOException {
  if (logger.isDebugEnabled()) {
   logger.debug("running SSH cmd [" + cmd + "]");
  }
  Connection conn = getOpenedConnection(host, username, password);
  Session sess = conn.openSession();
  sess.execCommand(cmd);
  InputStream stdout = new StreamGobbler(sess.getStdout());
  BufferedReader br = new BufferedReader(new InputStreamReader(stdout));
  while (true) {
   String line = br.readLine();
   if (line == null)
    break;
   if (logger.isDebugEnabled()) {
    logger.debug(line);
   }
  }
  sess.close();
  conn.close();
  return sess.getExitStatus().intValue();
}
private static Connection getOpenedConnection(String host, String username,
   String password) throws IOException {
  if (logger.isDebugEnabled()) {
   logger.debug("connecting to " + host + " with user " + username
     + " and pwd " + password);
  }
  Connection conn = new Connection(host);
  conn.connect(); // make sure the connection is opened
  boolean isAuthenticated = conn.authenticateWithPassword(username,
    password);
  if (isAuthenticated == false)
   throw new IOException("Authentication failed.");
  return conn;
}
public static int runLocal(String cmd) throws IOException {
  if (logger.isDebugEnabled()) {
   logger.debug("running local cmd [" + cmd + "]");
  }
  Runtime rt = Runtime.getRuntime();
  Process p = rt.exec(cmd);
  InputStream stdout = new StreamGobbler(p.getInputStream());
  BufferedReader br = new BufferedReader(new InputStreamReader(stdout));
  while (true) {
   String line = br.readLine();
   if (line == null)
    break;
   if (logger.isDebugEnabled()) {
    logger.debug(line);
   }
  }
  return p.exitValue();
}
}

其中方法的作用如下讲解:
scpGet(String host, String username, String password,String remoteFile, String localDir)
从其他网络计算机中拿去文件
scpPut(String host, String username, String password,String localFile, String remoteDir)
将文件拷贝到其他计算机上
runSSH(String host, String username, String password,String cmd)
执行SSH命令.
runLocal(String cmd)
执行本地的cmd命令.(DOS命令)  
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值