关于读取数据流文件时吞掉每行第一个字符的错误
2013-12-21 01:28
267 查看
在做一个解析pacp文件的时候需要读取文件中的每个属性,但是每次读出来的内容的每一行的第一个字符都被吞掉了,找了半天不知道为什么,后来看到在读取的时候用的read()方法,而且返回值是int类型,在变量初始化的时候默认应该是0,可能就这样把第一个给吞了(还是象不太清楚),read只会读取一个字节 不会自动读取下一个 只会读第一个字节 和指针不是一回事,但是如果使用readLine()函数就不会出现这种情况了,
当然这只是在使用inputStream的时候会出现这种情况,如果直接使用FileReader则这种问题就不会出现,使用read同样会把第一个字符读入,也可能是buffer在作怪,而且可能性很大,如果不使用buffer直接用FIleReader也是可以完全读入的,但是如果是使用buffer,并且使用int 返回值的read,那么必然会产生吞掉第一个字符的后果,具体代码贴出,如下:
当然这只是在使用inputStream的时候会出现这种情况,如果直接使用FileReader则这种问题就不会出现,使用read同样会把第一个字符读入,也可能是buffer在作怪,而且可能性很大,如果不使用buffer直接用FIleReader也是可以完全读入的,但是如果是使用buffer,并且使用int 返回值的read,那么必然会产生吞掉第一个字符的后果,具体代码贴出,如下:
package com.zaj; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; public class ReadLine { public static void readline(String file, String writerfile) { try { FileReader fr = new FileReader(file); BufferedReader br = new BufferedReader(fr); FileWriter fw = new FileWriter(writerfile); // 写文件操作,把得到的file对应的文件中内容写入,writerfile中去。 //System.out.println(fw.getEncoding());//utf-8默认 BufferedWriter bw = new BufferedWriter(fw); String readoneline; int l; while ((l = br.read()) != -1) { //此时会产生吞掉第一个字符的后果 readoneline = new String(br.readLine().getBytes(),"utf-8"); //System.out.println(readoneline); /*String l; while ((l = br.readLine()) != null) { //若使用readLine()则毫发无损 readoneline = new String(br.readLine().getBytes(),"utf-8"); //System.out.println(readoneline); */ bw.write(readoneline); bw.newLine(); System.out.println(readoneline); } bw.flush(); br.close(); bw.close(); br.close(); fw.close(); fr.close(); } catch (IOException e) { e.printStackTrace(); } } public static void main(String[] args) { readline("D:\\TDDOWNLOAD\\test\\packWifi.pcap", "D:\\TDDOWNLOAD\\test\\packWifi.txt"); } }
相关文章推荐
- 关于读取文件字符的两种写法在Lucene中的问题
- 文件读取的第一行的第一个字符不正确
- ifstream读取文件第一个字符乱码问题
- 关于MFC读取excel文件后退出程序后出现dispatch错误的解决方法
- Java读取文件信息读取的第一个字符是空字符
- BufferedReader.readLine()读取文件第一行会出现bug,首行第一个字符会是一个空字符
- 关于从txt文件读取字符,怎么过滤空格,回车,换行符等。
- json文件中的特殊字符处理,放置json数据读取产生错误
- windows java读取utf-8编码文件时出现第一个字符为未知字符"?" 的解决方案
- jmeter测试读取 .csv 文件出现第一个字符乱码的解决方法
- 关于scanf和cin读取字符的错误
- bufferedReader 读取文件第一行第一个字符丢失问题
- 关于用<fmt:message>标签读取springmvc配置的国际化资源文件显示为???key???的错误原因
- BufferedReader.readLine()读取文件第一行会出现bug,首行第一个字符会是一个空字符
- PHP读取csv文件时字符前中文丢失的问题!
- 关于文件读取的一点小问题
- Spark 读取hdfs上的文件 错误:Caused by: java.io.IOException: Filesystem closed的处理
- VC中关于预编译头文件的概括,以及无法打开预编译头文件的错误解决
- javaweb中关于读取资源文件三种方式
- 关于文件路径读取的几个方法