我想用Java来逐行读取一个文件,这很简单(在stackoverflow.com上有多个解决方案),但是这里需要注意的是该文件位于远程服务器上,是不可能获得本地副本(这是在单个.txt文件中的数百万亚马逊评论的大量集合)。如何使用Java JSch库逐行读取远程文件?
JSch附带两个将文件复制到远程主机或从远程主机复制文件的示例类,即ScpTo和ScpFrom。我对从远程主机逐行读取文件感兴趣; ScpFrom会尝试将整个事件复制到本地文件中,这需要很长时间。
我想尝试货物邪教代码那里,然后修改它以逐行读取远程文件行而不是写入到本地文件,但大部分代码一旦作者声明了一个字节数组并开始从远程文件中读取字节,就是希腊语。我承认这是我几乎不了解的东西; BufferedReader提供了一个更高层次的接口。本质上我想这样做:How to read a large text file line by line using Java?
除了使用一个BufferReader,也可以逐行读取远程文件,如果提供的主机名和用户凭证(密码等),即RemoteBufferReader?
这是我写的测试代码;我如何使用JSCh逐行读取远程文件?
public class test2
{
static String user = "myusername";
static String host = "[email protected]";
static String password = "mypasswd";
static String rfile = "/path/to/remote/file/on/remote/host";
public static void main(String[] args) throws FileNotFoundException, IOException, JSchException
{
JSch jsch=new JSch();
Session session=jsch.getSession(user, host, 22);
session.setPassword(password);
session.connect();
// exec 'scp -f rfile' remotely
String command="scp -f "+rfile;
Channel channel=session.openChannel("exec");
((ChannelExec)channel).setCommand(command);
// get I/O streams for remote scp
OutputStream out=channel.getOutputStream();
channel.connect()
//no idea what to do next
}
}
+0
我会使用'cat'(在远程主机上)而不是'scp'。然后只需读取命令行的标准输出。 –
2014-09-04 05:10:39
+1
你可以使用jsch通过sftp打开一个输入流,然后逐行读取 –
2014-09-04 06:13:55