【问题标题】:Java, read from file throws io exception - read errorJava,从文件读取引发 io 异常 - 读取错误
【发布时间】:2010-01-28 12:35:33
【问题描述】:

我正在使用以下方法从文件(data.bin)中读取 -

 fis1 = new FileInputStream(file1);
 String data;
    dis1 = new DataInputStream(fis);
    buffread1=new BufferedReader(new InputStreamReader(dis1));
    while( (data= buffread1.readLine())!=null){

}

现在我得到了读取错误的 io 异常。现在我猜我可能无法读取文件中的数据,因为它们以以下格式存储。

#SP,IN-1009579,13:00:33,20/01/2010, $Bœ™šAe%N B\VÈ–7$B™šAciC B]|XçF [s + ýŒ 01210B3âEªP6@·B.

以上只是文件的一行,我想读取该文件的每一行并对读取的数据进行操作。 任何有关如何完成上述操作的指示都会有很大帮助。

干杯

【问题讨论】:

    标签: java exception file


    【解决方案1】:

    这看起来像是二进制数据的一部分。您不想将其完全解读为字符数据。而是使用InputStream 而不是Reader 来读取二进制数据。要了解有关 IO 基本知识的更多信息,请咨询 Sun 自己的IO tutorial

    【讨论】:

      【解决方案2】:

      我猜你想要的只是:(DataInputStream 需要一些已序列化为字节数组的对象......)

          buffread1=new BufferedReader(new FileReader(file1));
          while( (data= buffread1.readLine())!=null){
      
      }
      

      【讨论】:

      • Filereader 读取数据正常,但不正确。当我对文件读取器读取的数据字符串进行十六进制转换时,我看到它以错误的方式转换,我看到很多'fffd'被附加到许多转换为十六进制的字节
      • @ping,那是因为它不是字符数据。十六进制作为二进制文件的表示很有趣,但这并不是出于商业目的将它们实际上读取为字符数据的借口。顺便说一下,xFFFD 字符特定于您用来查看它们的输出/显示内容(这通常意味着它找不到与底层字节关联的虚构字符的字体/字形),而不是十六进制/二进制/随便。
      猜你喜欢
      • 2012-10-07
      • 2014-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-10
      • 1970-01-01
      • 2022-08-19
      • 2018-10-15
      • 1970-01-01
      相关资源
      最近更新 更多