根据文件名,使用Java JSch库和缓冲流逐行读取远程文件并返回list的最优写法
时间: 2024-03-02 08:53:21 浏览: 84
以下是使用Java JSch库和缓冲流逐行读取远程文件并返回List的最优写法:
```java
import com.jcraft.jsch.*;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
public class RemoteFileReader {
public static List<String> readRemoteFile(String filename, String username, String password, String hostname) {
List<String> lines = new ArrayList<>();
JSch jsch = new JSch();
Session session = null;
Channel channel = null;
try {
session = jsch.getSession(username, hostname, 22);
session.setPassword(password);
session.setConfig("StrictHostKeyChecking", "no");
session.connect();
channel = session.openChannel("sftp");
channel.connect();
ChannelSftp sftpChannel = (ChannelSftp) channel;
InputStream inputStream = sftpChannel.get(filename);
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
String line;
while ((line = reader.readLine()) != null) {
lines.add(line);
}
} catch (JSchException | SftpException | IOException e) {
e.printStackTrace();
} finally {
if (channel != null) {
channel.disconnect();
}
if (session != null) {
session.disconnect();
}
}
return lines;
}
}
```
此方法使用JSch库连接到远程主机并获取文件的输入流。然后,使用缓冲读取器逐行读取文件并将其添加到List中。最后,关闭连接并返回List。
阅读全文