这是我使用 JSch 从另一个位置读取文件的代码
import com.jcraft.jsch.*;
import java.io.BufferedReader;
import java.io.*;
import java.util.Vector;
public class SftpClient {
public static void main(String args[]) {
JSch jsch = new JSch();
Session session = null;
FileReader reader =null;
BufferedReader buffer = null;
try
{
.
session = jsch.getSession("userName", "Ip Address");
java.util.Properties config = new java.util.Properties();
config.put("StrictHostKeyChecking", "no");
session.setConfig(config);
session.setPassword("password");
session.connect();
Channel channel = session.openChannel("sftp");
channel.connect();
ChannelSftp sftpChannel = (ChannelSftp) channel;
System.out.println("Is connected to IP:"+channel.isConnected());
Vector ls=sftpChannel.ls("/misc/downloads/");
for(int i=0;i<ls.size();i++){
System.out.println("Ls:"+ls.get(i));
}
sftpChannel.cd("/misc/downloads/");
File file = new File("Text.txt");
sftpChannel.put(new FileInputStream(file),"Text.txt");
reader = new FileReader(file);
buffer = new BufferedReader(reader);
String getLine = "";
while ((getLine = buffer.readLine())!=null)
{
System.out.println("Line: "+getLine);
}
sftpChannel.exit();
session.disconnect();
}
catch (JSchException e) {
e.printStackTrace();
}
catch (Exception e){
e.printStackTrace();
}
finally{
try{
if(reader!=null)
reader.close();
if(buffer!=null)
buffer.close();
}
catch(Exception e){
System.out.println("Exception:"+e);
}
}
}
}
代码的输出是:
Is connected to IP:true
Ls:-rw-r--r-- 1 root root 733 Jul 19 17:46 Text.txt
java.io.FileNotFoundException: Text.txt (The system cannot find the file specified)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:103)
at SftpClient.main(SftpClient.java:34)
我收到了 FileNotFoundException,但在此之前我使用 ls 制作了 SOP 以列出 /misc/downloads/ 路径中的所有文件。
我能做些什么来解决这个问题?