0

こんにちは、別のリモート 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 Exception が発生しますが、Windows マシンで同じコードを試すと、ファイルを読み取ってその内容をローカル マシンにコピーできます。どこで間違いを犯しているのか教えてください。

4

2 に答える 2

1

詳細情報がないとわかりにくい。大まかな推測 (コメントで提案): Linux システムに正しいパス名を使用しましたか (Windows の名前とは異なります)? 大文字と小文字に注意しましたか?

これをさらにsshdデバッグするには、対象の Linux システムで (SSD デーモン) をデバッグ モードで実行します。次に接続を試み、ターゲット システムに到着するファイル名と、それが見つからない理由を確認します。

于 2013-05-17T07:25:09.293 に答える
0

こんにちは問題は解決しました。2 台のマシンは異なるネットワークにあるため、上記のコードは機能しませんでした。

于 2013-05-19T07:10:39.830 に答える