远程文件从一台Linux机器转移到另一台Linux机器

时间:2013-05-17 05:24:00

标签: java linux

您好我想在Linux机器上编写一个java程序,它应该读取另一台远程Linux机器中的文件并将其内容复制到源机器。我正在使用以下代码

  JSch jsch = new JSch();
  Session session = jsch.getSession(user, host, port);
  session.setPassword(password);
  session.setConfig("StrictHostKeyChecking", "no");
  System.out.println("Establishing Connection...");
  session.connect();
  System.out.println("Connection established.");
  System.out.println("Crating SFTP Channel.");
  ChannelSftp sftpChannel = (ChannelSftp) session.openChannel("sftp");
  sftpChannel.connect();
  System.out.println("SFTP Channel created.");
  InputStream out = null; //.get(remoteFile);
  out = sftpChannel.get(pub);
  System.out.println("Read Successful");
  System.out.println(pub);
  StartString = pub.split("/");
  i=StartString.length;
  fileName =LocalWrite+StartString[i-1];
  System.out.println(fileName);   
  OutputStream fileOut = new FileOutputStream(new File(fileName));
  byte[] buf = new byte[1024];
  int len;
  while ((len = out.read(buf)) > 0) {
    fileOut.write(buf, 0, len);
  }
  System.out.println("Wrote Successfull");
  out.close();
  fileOut.close();
  sftpChannel.disconnect();
  session.disconnect();`

当我尝试这个时,我得到一个fileNotFound异常但是当我在Windows机器上尝试相同的代码时,我能够读取该文件并将其内容复制到我的本地机器。你能告诉我我在做错的地方吗?

2 个答案:

答案 0 :(得分:1)

没有更多信息很难说出来。一个疯狂的猜测(在评论中建议):您是否使用了Linux系统的正确路径名(与Windows上的名称不同)?您是否注意大/小写?

要进一步调试,可以在目标Linux系统上以调试模式运行sshd(SSD守护程序)。然后尝试连接,查看目标系统上到达的文件名,以及为什么找不到它。

答案 1 :(得分:0)

嗨问题已经解决了。这两台机器在不同的网络中,因此上面的代码无效。