首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TextFile包含EOF。如何读到真实的EOF?

TextFile包含EOF。如何读到真实的EOF?
EN

Stack Overflow用户
提问于 2017-02-08 18:10:51
回答 3查看 648关注 0票数 2

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

在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 )上获得的内容

在十六进制中没有区别,但是第二个停止处理文件。

EN

回答 3

Stack Overflow用户

发布于 2017-02-08 18:20:03

我不确定,但我认为您应该尝试不同的编码,而不是默认编码,在这种情况下,EOF可能会被视为不同的字符&此时您的FileInputStream不会终止。但要做到这一点,您必须使用适当的技术将读取的文本转换为实际的文本。

票数 0
EN

Stack Overflow用户

发布于 2017-02-08 18:25:25

您可以将流读入byte[]数组(或ByteBuffer),然后read方法返回读取的字节数。

尽管如此-我想你应该考虑:

  • 使用BufferedReader时,readLine()可能会在文件末尾返回null,这就是为什么您会在trim()方法上获取NullPointerException
  • 如果读取字节,它们将具有0-255的值,但这并不意味着您可以将它们全部转换为文本
  • 检查文件大小-可能在您尝试读取文件时文件确实不完整,并且文件实际上已结束(对于数据,
  • 方法返回值0-255或对于EOF,返回值为-1 ),因此输入流实际上会读取文件,直到其结束
票数 0
EN

Stack Overflow用户

发布于 2017-02-08 19:42:36

好的,"bufferedreader“可以很好地解决你的问题,我试过了

代码语言:javascript
复制
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();
	      }
	}

}
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42110177

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档