当前位置: 首页 > 面试题库 >

java-FileWriter是否使用缓冲区?(它的行为类似于我的示例)

许涵容
2023-03-14
问题内容

我正在使用FileWriter,并且注意到了奇怪的行为。我自己和我使用的每x行缓冲我的收藏

 IOUtils.writelines(myList,"\n", writer );

它不会写入文件。我继续用更多的行来称呼它,直到它写满后才写入文件。
它是否使用缓冲区?我在其文档中找不到它。


问题答案:

第二句的FileWriter类概述说:

此类的构造函数假定默认字符编码 和默认字节缓冲区大小
是可接受的。要自己指定这些值,请在FileOutputStream上构造一个OutputStreamWriter。

(我的重点)

显然,它是经过缓冲的(除非默认的字节缓冲区大小为零,并且它们的措词确实很奇怪)。

我怀疑它只是在OutputStreamWriter上使用FileOutputStream。看OutputStreamWriter

每次调用write()方法都会导致对给定字符调用编码转换器。 生成的字节在写入底层输出流之前会先在缓冲区中累积。

(我的重点)

如果要确保刷新各个级别的各种缓冲区,请使用flush方法。



 类似资料:
  • 我正在阅读有关流的信息,发现我们可以使用setvbuf()函数来控制流......它写的是在行缓冲模式中,当遇到换行符时流将数据发送到文件中,在无缓冲状态下没有缓冲......所以我写了以下代码...... 所以我认为,因为这些是无缓冲流,所以输入应该在我写入屏幕后立即发送到标准输出。。。但程序在写入每一行后等待我按enter键,然后屏幕上只显示输出(由于fwrite)。。。我的问题是,当这些是无

  • 我读到FileWriter和BufferedWriter的区别在于FileWriter直接写入文件(逐字符),white BufferedReader使用缓冲区。如果是,为什么FileWriter有缓冲区?例如,如果我创建一个FileWriter对象,如下所示: 而且,如果我在程序结束时不刷新或关闭写入器,它将不会向文件写入任何内容。这意味着它也使用缓冲区。拜托,解释一下?

  • 假设我有以下数组(每个数组都有任意长度)并将它们用作备件箱;将它们中的每一个放入缓冲区中,然后让 openGL 读取元素数组中的索引,并通过从每个数组箱中挑选来构建顶点。 我们可以使用 {坐标 v1, 法线 vn3, 颜色 c1, texCoord vt4} 构造一个顶点 或者我们可以使用< br > {再次使用坐标v1,再次使用法线vn3,颜色c3,texCoord vt2}构建另一个顶点 请注

  • 问题内容: 我想进行一些屏幕抓取,理想情况下使用CSS选择器而不是XPath。是否有类似于Ruby或Python的库? 问题答案: 有十二个用Java编写的屏幕抓取库。仅举几例: * TagSoup-一种用Java编写的,与SAX兼容的解析器,而不是解析格式正确或有效的XML,而是对HTML进行解析,而这种HTML经常在野外发现:令人讨厌和粗暴,尽管通常情况很短。TagSoup是为需要使用某种合理

  • Mac OS X和iOS有一个名为的不错的小类。它是一个单例,可让您存储字符串、数组和原语,并且您始终可以实现一些方法来向其添加自定义对象。当您需要存储快速设置而无需处理文件操作(例如,存储最后选择的字体名称)时,它非常有用。 Java有类似这样简单的东西吗?我希望能够存储用户的最后设置,以便在程序重新加载时重新加载类似的状态,但我不确定在Java中最好的方法是什么。

  • 我正在使用JOGL,但这个问题一般适用于OpenGL。似乎存在类似的问题,但它们要么针对GLSL代码,要么与复制帧缓冲区的内容有关,要么是一般建议-使用帧缓冲区对象,而不是。 我正在做一些阴影映射。如何使用帧缓冲对象将深度通道直接渲染到纹理? 能否请你贴一段初始化纹理和帧缓冲对象的代码,以及渲染场景前初始化一切的代码? 目前,我使用<code>glCopyTexSubImage2D<code>。我