我与一个奇怪的问题作斗争。首先,我没有机会改变方式,创建文件;这是供应商的责任。
在IBM Domino服务器上,我为命令“tell traveler show user”创建响应文件。 该文件是文本文件。在某些情况下(完整故事请参见http://www.eknori.de/2017-02-05/fun-with-ibm-traveler-and-java/),文件中间包含一个-1字符(EOF)。
我尝试了几种方法来读取文件(BufferedReader,Scanner,InputStream,LineIterator等),但所有这些方法都检查-1或null作为EOF的指示符。
我的选项用完了。有没有人知道如何从文件中获取整个数据?
更新:
以下是创建的文件的内容以及我在服务器控制台(以及BufferedReader)中获得的内容
HEX没有区别,但第二个停止处理文件。
答案 0 :(得分:0)
我不确定,但我认为您应该尝试不同的编码,而不是默认情况下EOF
可能会遇到不同的字符&您的FileInputStream
不会在此时终止。
但这样做你必须使用适当的技术将读取的文本转换为实际文本。
答案 1 :(得分:0)
您可以将流读入byte []数组(或ByteBuffer),然后 read 方法返回读取字节数。
无论如何 - 恕我直言,你应该考虑:
使用BufferedReader时, readLine()可能会在文件末尾返回 null ,这就是你在trim()上得到NullPointerException的原因方法
如果您读取字节,它们的值将为0-255,但这并不意味着您可以将它们全部转换为文本
检查文件大小 - 当你尝试读取它时文件真的不完整而且文件真的在那里结束(read方法返回值0-255表示数据或-1表示EOF),所以输入流真正阅读文件直到结束
答案 2 :(得分:0)
好“ bufferedreader ”适用于您的问题,只是尝试了
public class ee {
public static void main(String[] args) {
String thisLine = "";
try{
BufferedReader br = new BufferedReader(new FileReader(new File("C:/Users/rathi.ankush/Desktop/temp.txt")));
while ((thisLine = br.readLine()) != null) {
System.out.println(thisLine);
}
}catch(Exception e){
e.printStackTrace();
}
}
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script>