我有一個文件在unix目錄中,我需要閱讀並顯示它的內容到頁面。我在我的java代碼中使用jcraft庫。我能夠連接到Unix服務器並找到該文件但無法讀取它。我發現示例代碼來讀取文件,但它不工作,它死於int c = in.read()行,可能卡在循環中...我發佈我的代碼可能是你可以發現一個問題。如果還有其他(更好的)方法可以做到這一點,我將不勝感激。希望我的問題和示例代碼足夠清楚。謝謝大家。如何使用Java在Unix目錄中讀取文件?
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);
}
}
}
無法讀取手段?發佈錯誤.. – MaheshVarma
沒有錯誤,它只停在int c = in.read();行並沒有任何反應(沒有錯誤,沒有警告......),但代碼不會繼續 – JS11