unix ディレクトリにファイルがあり、その内容を読み取ってページに表示する必要があります。Java コードで jcraft ライブラリを使用しています。Unix サーバーに接続してファイルを見つけることはできますが、読み取ることができません。ファイルを読み取るためのサンプル コードを見つけましたが、機能していません。int c = in.read() 行で停止し、おそらくループでスタックしています... コードを投稿しています。問題が見つかる可能性があります。それを行う他の(より良い)方法があれば、例をいただければ幸いです。私の質問とサンプルコードが十分に明確であることを願っています。皆さんありがとう。
public String readFile(String path) throws Exception {
ChannelExec c = (ChannelExec)session.openChannel("exec");
OutputStream os = c.getOutputStream();
InputStream is = c.getInputStream();
c.setCommand("scp -f " + path); //path is something like /home/username/sample.txt
c.connect();
String header = readLine(is);
int length = Integer.parseInt(header.substring(6, header.indexOf(' ', 6)));
os.write(0);
os.flush();
byte[] buffer = new byte[length];
length = is.read(buffer, 0, buffer.length);
os.write(0);
os.flush();
c.disconnect();
return new String(buffer);
}
private String readLine(InputStream in) throws IOException {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
for (;;) {
int c = in.read(); // code stops working here
if (c == '\n') {
return baos.toString();
} else if (c == -1) {
throw new IOException("End of stream");
} else {
baos.write(c);
}
}
}