黑马程序员技术交流社区

标题: FileWriter默认缓冲区的大小是多少? [打印本页]

作者: SenGoo    时间: 2014-10-21 20:12
标题: FileWriter默认缓冲区的大小是多少?
FileWriter默认缓冲区的大小是多少?以后数据增加延长多少啊?
作者: 王震阳老师    时间: 2014-10-22 09:52
默认
  1. private final int writeBufferSize = 1024;
复制代码
个字节。
作者: xiaochongbojue    时间: 2014-10-22 10:14
就业指导-王震阳老师 发表于 2014-10-22 09:52
默认  个字节。
  1. /**
  2.      * Size of writeBuffer, must be >= 1
  3.      */
  4.     private static final int WRITE_BUFFER_SIZE = 1024;
复制代码

缓冲区大小定义为final应该不能增加延长,满了就输出,刷新,之后重写,对吗阳哥。对的话加技术分哦:victory:
作者: SenGoo    时间: 2014-10-22 10:31
就业指导-王震阳老师 发表于 2014-10-22 09:52
默认  个字节。

十分感谢!
作者: SenGoo    时间: 2014-10-22 10:50
就业指导-王震阳老师 发表于 2014-10-22 09:52
默认  个字节。

我测试了一下,果然是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. }
复制代码

作者: 王震阳老师    时间: 2014-10-22 17:14
SenGoo 发表于 2014-10-22 10:50
我测试了一下,果然是1024字节!默认增加1024字节!

你是从哪里看出默认正价1024呢?你不会是看的文件的大小吧?
作者: SenGoo    时间: 2014-10-22 17:22
就业指导-王震阳老师 发表于 2014-10-22 17:14
你是从哪里看出默认正价1024呢?你不会是看的文件的大小吧?

是啊!分别网文件里写1个字节的数据,102个字节的数据和1025个字节的数据!看文件大小分别是1k,1k
,2k.
作者: 王震阳老师    时间: 2014-10-22 18:35
SenGoo 发表于 2014-10-22 17:22
是啊!分别网文件里写1个字节的数据,102个字节的数据和1025个字节的数据!看文件大小分别是1k,1k
,2k. ...

这个是window平台给文件分配内存大小的缘故,与Java 的缓存没关系。
作者: SenGoo    时间: 2014-10-22 23:38
就业指导-王震阳老师 发表于 2014-10-22 18:35
这个是window平台给文件分配内存大小的缘故,与Java 的缓存没关系。

那怎么才能知道啊?
作者: 王震阳老师    时间: 2014-10-23 09:54
SenGoo 发表于 2014-10-22 23:38
那怎么才能知道啊?

看outputstream源码就行了。
作者: SenGoo    时间: 2014-10-23 10:00
就业指导-王震阳老师 发表于 2014-10-23 09:54
看outputstream源码就行了。

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

这段代码应该是分配了 2k的内存,是吗阳哥。
作者: chensc    时间: 2014-10-23 20:39
学习学习!
作者: 王震阳老师    时间: 2014-10-23 22:43
xiaochongbojue 发表于 2014-10-23 16:41
这段代码应该是分配了 2k的内存,是吗阳哥。

可以这么说,因此每个char占2个字节,一共分配了1024个,总共2k。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2