TextFile包含EOF。如何阅读真正的EOF?

时间:2017-02-08 10:10:51

标签: java bufferedreader lotus-domino

我与一个奇怪的问题作斗争。首先,我没有机会改变方式,创建文件;这是供应商的责任。

在IBM Domino服务器上,我为命令“tell tr​​aveler 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)中获得的内容

All Good

Reading stopped

HEX没有区别,但第二个停止处理文件。

3 个答案:

答案 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>