A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© SenGoo 中级黑马   /  2014-10-21 20:12  /  1816 人查看  /  13 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

FileWriter默认缓冲区的大小是多少?以后数据增加延长多少啊?

13 个回复

倒序浏览
默认
  1. private final int writeBufferSize = 1024;
复制代码
个字节。
回复 使用道具 举报
  1. /**
  2.      * Size of writeBuffer, must be >= 1
  3.      */
  4.     private static final int WRITE_BUFFER_SIZE = 1024;
复制代码

缓冲区大小定义为final应该不能增加延长,满了就输出,刷新,之后重写,对吗阳哥。对的话加技术分哦:victory:

评分

参与人数 1技术分 +1 收起 理由
王震阳老师 + 1 赞一个!

查看全部评分

回复 使用道具 举报

十分感谢!
回复 使用道具 举报

我测试了一下,果然是1024字节!默认增加1024字节!
  1. import java.io.*;
  2. class FileWriteDemo
  3. {
  4.          public static void main(String args[]) throws IOException
  5.          {
  6.           //        char[] cha=new char[1];  //1字节的字符数组
  7.              //char[] cha = new char[1024];//1024字节的字符数组
  8.              char[] cha = new char[1025];//1024字节的字符数组
  9.                    for(int x=0;x<cha.length;x++)    //向数组中写入字符
  10.                    {
  11.                             cha[x]='a';
  12.                    }
  13.                    String s=new String(cha); //将字符数组转成字符串
  14.                   
  15. //创建一个demo.txt关联的FileWriter流
  16. FileWriter fw=new FileWriter("demo.txt");
  17.                    fw.write(s);  //向流中写入字符串s
  18.                    fw.flush();
  19.          }
  20. }
复制代码
回复 使用道具 举报
SenGoo 发表于 2014-10-22 10:50
我测试了一下,果然是1024字节!默认增加1024字节!

你是从哪里看出默认正价1024呢?你不会是看的文件的大小吧?
回复 使用道具 举报
SenGoo 中级黑马 2014-10-22 17:22:52
7#
就业指导-王震阳老师 发表于 2014-10-22 17:14
你是从哪里看出默认正价1024呢?你不会是看的文件的大小吧?

是啊!分别网文件里写1个字节的数据,102个字节的数据和1025个字节的数据!看文件大小分别是1k,1k
,2k.
回复 使用道具 举报
SenGoo 发表于 2014-10-22 17:22
是啊!分别网文件里写1个字节的数据,102个字节的数据和1025个字节的数据!看文件大小分别是1k,1k
,2k. ...

这个是window平台给文件分配内存大小的缘故,与Java 的缓存没关系。
回复 使用道具 举报
SenGoo 中级黑马 2014-10-22 23:38:07
9#
就业指导-王震阳老师 发表于 2014-10-22 18:35
这个是window平台给文件分配内存大小的缘故,与Java 的缓存没关系。

那怎么才能知道啊?
回复 使用道具 举报
SenGoo 发表于 2014-10-22 23:38
那怎么才能知道啊?

看outputstream源码就行了。
回复 使用道具 举报
SenGoo 中级黑马 2014-10-23 10:00:29
11#

十分感谢!
回复 使用道具 举报
就业指导-王震阳老师 发表于 2014-10-22 18:35
这个是window平台给文件分配内存大小的缘故,与Java 的缓存没关系。
  1. new char[1024]  ;
复制代码

这段代码应该是分配了 2k的内存,是吗阳哥。
回复 使用道具 举报
chensc 金牌黑马 2014-10-23 20:39:07
13#
学习学习!
回复 使用道具 举报
xiaochongbojue 发表于 2014-10-23 16:41
这段代码应该是分配了 2k的内存,是吗阳哥。

可以这么说,因此每个char占2个字节,一共分配了1024个,总共2k。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马