bufferedReader 读取文件第一行第一个字符丢失问题
2017-08-21 11:42
1266 查看
在做一个解析pacp文件的时候需要读取文件中的每个属性,但是每次读出来的内容的每一行的第一个字符都被吞掉了,找了半天不知道为什么,后来看到在读取的时候用的read()方法,而且返回值是int类型,在变量初始化的时候默认应该是0,可能就这样把第一个给吞了(还是象不太清楚),read只会读取一个字节 不会自动读取下一个 只会读第一个字节 和指针不是一回事,但是如果使用readLine()函数就不会出现这种情况了,
当然这只是在使用inputStream的时候会出现这种情况,如果直接使用FileReader则这种问题就不会出现,使用read同样会把第一个字符读入,也可能是buffer在作怪,而且可能性很大,如果不使用buffer直接用FIleReader也是可以完全读入的,但是如果是使用buffer,并且使用int 返回值的read,那么必然会产生吞掉第一个字符的后果,具体代码贴出,如下:
当然这只是在使用inputStream的时候会出现这种情况,如果直接使用FileReader则这种问题就不会出现,使用read同样会把第一个字符读入,也可能是buffer在作怪,而且可能性很大,如果不使用buffer直接用FIleReader也是可以完全读入的,但是如果是使用buffer,并且使用int 返回值的read,那么必然会产生吞掉第一个字符的后果,具体代码贴出,如下:
1 package com.zaj; 2 3 import java.io.BufferedReader; 4 import java.io.BufferedWriter; 5 import java.io.FileReader; 6 import java.io.FileWriter; 7 import java.io.IOException; 8 9 public class ReadLine { 10 11 12 public static void readline(String file, String writerfile) { 13 try { 14 FileReader fr = new FileReader(file); 15 BufferedReader br = new BufferedReader(fr); 16 FileWriter fw = new FileWriter(writerfile); // 写文件操作,把得到的file对应的文件中内容写入,writerfile中去。 17 //System.out.println(fw.getEncoding());//utf-8默认 18 BufferedWriter bw = new BufferedWriter(fw); 19 20 String readoneline; 21 int l; 22 while ((l = br.read()) != -1) { //此时会产生吞掉第一个字符的后果 23 readoneline = new String(br.readLine().getBytes(),"utf-8"); 24 //System.out.println(readoneline); 25 26 /*String l; 27 while ((l = br.readLine()) != null) { //若使用readLine()则毫发无损 28 readoneline = new String(br.readLine().getBytes(),"utf-8"); 29 //System.out.println(readoneline); 30 */ 31 bw.write(readoneline); 32 bw.newLine(); 33 System.out.println(readoneline); 34 } 35 bw.flush(); 36 br.close(); 37 bw.close(); 38 br.close(); 39 fw.close(); 40 fr.close(); 41 } catch (IOException e) { 42 e.printStackTrace(); 43 } 44 } 45 46 public static void main(String[] args) { 47 readline("D:\\TDDOWNLOAD\\test\\packWifi.pcap", "D:\\TDDOWNLOAD\\test\\packWifi.txt"); 48 } 49 }
相关文章推荐
- inputStreamReader bufferedReader File 读取文件 解决字符格式问题 UTF-8 GBK
- BufferedReader.readLine()读取文件第一行会出现bug,首行第一个字符会是一个空字符
- BufferedReader.readLine()读取文件第一行会出现bug,首行第一个字符会是一个空字符
- 文件读取的第一行的第一个字符不正确
- BufferedReader和FileReader读取txt文件乱码问题
- FileReader读取文件编码丢失问题(乱码)
- Java:bufferedReader.readLine()读取文件换行问题
- ifstream读取文件第一个字符乱码问题
- Java:bufferedReader.readLine()读取文件换行问题
- 读取文件--BufferedReader--字符节点输入流
- java编程,字符流BufferedReader,读取一个文件。finally,readLine,FileReader
- PHP读取csv文件时字符前中文丢失的问题!
- FileReader读取中文txt文件编码丢失问题(乱码)
- FileReader读取中文txt文件编码丢失问题(乱码)(转)
- br.read()和 bufferedReader.readLine() 区别,br.read()出现丢失第一个字符
- java文件读取(按字符读+按字节读+缓冲读取)FileReader FileInputStream BufferedReader
- C#读取excel文件数据丢失问题
- Python从文件中读取字符串,用正则表达式匹配中文字符的问题
- (好文!!)FileReader读取文件,由于不确定源文件的编码格式不同,导致读出的文件乱码的问题
- BufferedReader读取UTF-8文件中文乱码