bufferedReader 读取文件第一行第一个字符丢失问题
在做一个解析pacp文件的时候需要读取文件中的每个属性,但是每次读出来的内容的每一行的第一个字符都被吞掉了,找了半天不知道为什么,后来看到在读取的时候用的read()方法,而且返回值是int类型,在变量初始化的时候默认应该是0,可能就这样把第一个给吞了(还是象不太清楚),read只会读取一个字节 不会自动读取下一个 只会读第一个字节 和指针不是一回事,但是如果使用readLine()函数就不会出现这种情况了,
当然这只是在使用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 }
bufferedReader 读取文件第一行第一个字符丢失问题的更多相关文章
- 如何设置textarea光标默认为第一行第一个字符
判断文本区是否有内容,如果没有那么光标肯定是在第一行第一个为止的,记住,空格回车也算是有内容在的,也会影响光标的位置
- matlab文件读写处理实例(三)——读取文件特定行
(1) 读取文件特定行 CODE: ; ; if nline==line fprintf(fidout,'%s\n',tline); data ...
- 使用Perl批量读取文件最后行
使用Perl批量读取文件最后行 面对成百上千个文件,有时我们需要查看它的最后行,单个文件打开将耗费大量时间,而通过Perl提取出最后行,将快速的帮助我们处理繁琐的事务. 特性 整个目录完全遍历,自动提 ...
- python读取文件指定行内容
python读取文件指定行内容 import linecache text=linecache.getline(r'C:\Users\Administrator\Desktop\SourceCodeo ...
- python3读取文件指定行的三种方案
技术背景 考虑到深度学习领域中的数据规模一般都比较大,尤其是训练集,这个限制条件对应到实际编程中就意味着,我们很有可能无法将整个数据文件的内容全部都加载到内存中.那么就需要一些特殊的处理方式,比如:创 ...
- java 读取文件——按照行取出(使用BufferedReader和一次将数据保存到内存两种实现方式)
1.实现目标 读取文件,将文件中的数据一行行的取出. 2.代码实现 1).方式1: 通过BufferedReader的readLine()方法. /** * 功能:Java读取txt文件的内容 步骤: ...
- python处理文件---每行末尾加上字符
题记:该代码是项目中需要处理一个文件,所以使用python去处理,还有另外一个方法就是使用notepad++的正则替换,这里就只是使用python脚本去处理了. 我想只要你懂一门语言,就很容易处理这个 ...
- Linux shell sed命令在文件行首行尾添加字符
昨天写一个脚本花了一天的2/3的时间,而且大部分时间都耗在了sed命令上,今天不总结一下都对不起昨天流逝的时间啊~~~ 用sed命令在行首或行尾添加字符的命令有以下几种: 假设处理的文本为test.f ...
- BufferedReader 使用 readLine() 读取 UTF-8 格式的文本第一行第一个字符是空字符的解决办法
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(ksmgVo.getFiledata( ...
随机推荐
- 网站远程附件存储到 OSS
参考:链接 链接 链接 简介 网站远程附件功能是指将用户上传的附件直接存储到远端的存储服务器,一般是通过FTP的方式存储到远程的FTP服务器,将论坛附件保存在 OSS 上有以下好处: 附件将拥有更 ...
- Java获取CPU序列号
获取CPU序列号 /** * 获取CPU序列号 * @return */ public static String getCpuId() throws IOException { Process pr ...
- Zabbix如何解决“System time is out of sync (diff with Zabbix server > 60s)”告警
Zabbix如何解决"System time is out of sync (diff with Zabbix server > 60s)"这种告警呢? 这个错误对应的中文提 ...
- 自定义线程池ThreadPoolExecutor
使用自定义的方式创建线程池 Java本身提供的获取线程池的方式 使用Executors直接获取线程池,注意,前四个方式的底层都是通过new ThreadPoolExecutor()的方式创建的线程池, ...
- CSAPP =2= 信息的表示和处理
思维导图 预计阅读时间:30min 阅读书籍 <深入理解计算机系统 第五版> 参考视频 [精校中英字幕]2015 CMU 15-213 CSAPP 深入理解计算机系统 课程视频 参考文章 ...
- 渣渣的Leetcode之旅(Python3)_1.两数之和
题目:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标.你可以假设每种输入只会对应一个答案.但是,数组中同一个元素不能使用两遍 ...
- python中的锁lock=threading.Lock()
避免多个线程保卫同一块数据的时候,产生错误,所以加锁来防止这种问题 个人理解:当打印结果是交替打印时,但是如果需求是需要打印完一个线程的内容后,再去打印另一个线程的内容,就需要用到锁 不加锁打印结果: ...
- 原来写插件还可以选MEF
MEF是微软提供的一个轻量级的ICO容器,可以轻易的解除程序集的依赖关系,最近想写个类似插件试的软件所以搜索了一下,终于淘到宝了. 下面我们看看MEF是如何解耦的 新建一个控制台项目两个类库 Ites ...
- java里的锁总结(synchronized隐式锁、Lock显式锁、volatile、CAS)
一.介绍 首先, java 的锁分为两类: 第一类是 synchronized 同步关键字,这个关键字属于隐式的锁,是 jvm 层面实现,使用的时候看不见: 第二类是在 jdk5 后增加的 Lock ...
- 关于java中循环的学习
switch 值是固定的 效率高语法:switch (表达式) { case 常量 1: 语句; break; case 常量 2: 语句; break; … default: 语句; break;} ...