BufferedWriter 和 BufferedReader 的使用

BufferedWriter 和 BufferedReader 的使用BufferedWriter BufferedWriter起始跟FileWriter的使用没什么区别,属于字符输出流。BufferedWriter更高效,因为它内置有一个长度为8192的字符数组,也就是8K的字符数组。这样子,如果我们往文件里面写内容的话,如果内容没有填满这个数组,就会自动等待直到我们填满,然后一起写入硬盘。硬盘的运行速度是很慢的。但是我们也可以利用c…

大家好,又见面了,我是你们的朋友全栈君。

  • BufferedWriter

BufferedWriter 起始跟 FileWriter 的使用没什么区别,属于字符输出流。

BufferedWriter 更高效,因为它内置有一个长度为 8192 的字符数组,也就是 8K 的字符数组。这样子,如果我们往文件里面写内容的话,如果内容没有填满这个数组,就会自动等待直到我们填满,然后一起写入硬盘。硬盘的运行速度是很慢的。但是我们也可以利用 close() 方法,虽然它可能没有满,但是还是可以强制让它写入硬盘

就像黑车司机一样,他拉客,通常总不会拉一个客人就走,一般都是整辆车都坐满了人,才会开车,但有时候实在招不到人了,总不能不走吧。也还是会启动的。

除此之外,BufferedWriter 还提供了自动换行的方法 —— newLine() 方法,它会根据操作系统的不一样,自动增添换行符。在实际开发中,如果要换行,就尽量使用 newLine() 方法。

BufferedWriter 的使用需要借助 FileWriter 来使用:

public class TestBufferedWriter {

	public static void main(String[] args) throws IOException{
		FileWriter fw = new FileWriter("file01.txt");
		BufferedWriter bw = new BufferedWriter(fw);
		int size = 0;
		while(true) {
			bw.write("你是我的眼");
			bw.newLine();
			size++;
			if(size==8193)
				break;
			System.out.println("XXX");
		}
		System.out.println("YYY");
		bw.close();
	}
	
}

结果是在一个名为 “file01” 的 txt 文件写入了 8193 行的 “你是我的眼”。

  • BufferedReader

BufferedReader 起始跟 FileReader 的使用没什么区别,属于字符输入流。

BufferedReader 更高效,因为它内置有一个长度为 8192 的字符数组,也就是 8K 的字符数组。这样子,如果我们从文件里面读内容的话,如果内容没有填满这个数组,就会自动等待直到我们填满,然后一起从硬盘读到内存。硬盘的运行速度是很慢的。但是我们也可以利用 close() 方法,虽然它可能没有满,但是还是可以强制让它读入内存

就像供应商运货物到超市,为了省钱,一般不会只装一两个,而是装满了整辆车才上送往超市是吧。但是有时候特殊情况,装不下了,只能再跑一趟了。当我们读的时候,是一个一个的拿出来读的。

除此之外,BufferedReader 还提供了读取一整行的方法 —— readLine() 方法。

BufferedReader 的使用需要借助 FileReader 来使用:

注:一共有三种方法来进行读取

	public static void main(String[] args) throws IOException {
		FileReader fr = new FileReader("file01.txt");
		BufferedReader br = new BufferedReader(fr);
		
        /*
        int ch;
		while((ch=br.read())!=-1) {
			System.out.print((char)ch);
			if((char)ch == '\n')
				System.out.println();
		}
        */

		String str;
		while((str=br.readLine())!=null)
			System.out.println(str);
		
		
		/*char[] a = new char[8193];
		int len;
		while((len=br.read(a))!=-1) {
			String str = new String(a,0,len);
			System.out.println(str);
		}
		System.out.print("********");
		*/

		br.close();
	}
}

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/133643.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 如何通过一个SAPGUI屏幕反查这个屏幕对应的事务码[通俗易懂]

    如何通过一个SAPGUI屏幕反查这个屏幕对应的事务码[通俗易懂]如何通过一个SAPGUI屏幕反查这个屏幕对应的事务码

    2022年4月21日
    40
  • 详解react hooks(含高阶组件)

    详解react hooks(含高阶组件)一 面试中出现的关于 hooks 的题目 1 简单介绍下什么是 hooks hooks 的优点 ReactHooks 是 react 团队研发的 它主要有两方面作用 用于在函数组件中引入状态管理和生命周期方法取代高阶组件和 renderprops 来实现抽象和可重用性在 hooks 出现之前 只有在类组件中可以使用本地状态管理和生命周期方法 函数组件只能是无状态组件 因为函数组件使用便利优雅 已经被广泛使用 后期如果函数组件需要承担一些副作用 只能把它重构成类组件 hooks 的出现就不需要重构了 它帮助函数组

    2025年10月4日
    3
  • 微服务分布式事务解决方案Seata

    微服务分布式事务解决方案Seata文章目录一 pandas 是什么 二 使用步骤 1 引入库 2 读入数据 总结一 什么是 Seata Seata 是一款开源的分布式事务解决方案 致力于提供高性能和简单易用的分布式事务服务 Seata 将为用户提供了 AT TCC SAGA 和 XA 事务模式 为用户打造一站式的分布式解决方案 AT 模式是阿里首推的模式 阿里云上有商用版本的 GTS GlobalTransa 全局事务服务 提示 业务场景 角色划分

    2025年11月1日
    3
  • RELU激活函数作用「建议收藏」

    RELU激活函数作用「建议收藏」梯度消失现象:在某些神经网络中,从后向前看,前面层梯度越来越小,后面的层比前面的层学习速率高。梯度消失原因:sigmoid函数导数图像导数最大为0.25<1权重初始值通常使用一个高斯分布所以|w|<1,所以wjσ′(zj)<0.25,根据链式法则计算梯度越来越小。由于层数的增加,多个项相乘,势必就会导致不稳定的情况。sigmoid激活函数的…

    2022年6月16日
    34
  • php调用webservice

    php调用webservice

    2021年7月9日
    83
  • urlopen error errno111(英雄联盟报错error)

    原因获取地址信息失败,通常是由于自动选择的DNS服务器不行解决方法更换DNS服务器控制面板(win+R+control)->网络和Internet2.打开网络共享中心3.打开当前连接的网络,以wifi为例4.打开属性5.打开Internet协议版本46.选择使用特定DNS服务器地址,并设置为114.114.114.1148.设置完成后,错误解决…

    2022年4月18日
    59

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号