求问BufferedWriter构造器的问题

josephliver 2015-11-15 11:22:28
我看到API文档上写的BufferedWriter(Writer out)
然后大多数都是先new一个filewriter的对象,然后再用bufferedwriter来写
我想知道BufferedWriter构造器的形参到底是什么形式的
...全文
169 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
WZ22HAO 2015-11-16
  • 打赏
  • 举报
回复
// Method descriptor #65 (Ljava/io/Writer;I)V // Stack: 4, Locals: 3 public BufferedWriter(java.io.Writer arg0, int arg1); 0 aload_0 [this] 1 aload_1 [arg0] 2 invokespecial java.io.Writer(java.lang.Object) [108] 5 iload_2 [arg1] 6 ifgt 19 9 new java.lang.IllegalArgumentException [57] 12 dup 13 ldc <String "Buffer size <= 0"> [1] 15 invokespecial java.lang.IllegalArgumentException(java.lang.String) [109] 18 athrow 19 aload_0 [this] 20 aload_1 [arg0] 21 putfield java.io.BufferedWriter.out : java.io.Writer [96] 24 aload_0 [this] 25 iload_2 [arg1] 26 newarray char [5] 28 putfield java.io.BufferedWriter.cb : char[] [95] 31 aload_0 [this] 32 iload_2 [arg1] 33 putfield java.io.BufferedWriter.nChars : int [93] 36 aload_0 [this] 37 iconst_0 38 putfield java.io.BufferedWriter.nextChar : int [94] 41 aload_0 [this] 42 new sun.security.action.GetPropertyAction [64] 45 dup 46 ldc <String "line.separator"> [3] 48 invokespecial sun.security.action.GetPropertyAction(java.lang.String) [115] 51 invokestatic java.security.AccessController.doPrivileged(java.security.PrivilegedAction) : java.lang.Object [114] 54 checkcast java.lang.String [60] 57 putfield java.io.BufferedWriter.lineSeparator : java.lang.String [98] 60 return Stack map table: number of frames 1 [pc: 19, full, stack: {}, locals: {java.io.BufferedWriter, java.io.Writer, int}]
WZ22HAO 2015-11-16
  • 打赏
  • 举报
回复
BufferedWriter类覆盖了基类中的读数据行为,利用缓冲区来提高读写效率 参数指定了需要被缓冲的输出流,比如你的文件输出流是FileWriter,用BufferedWriter来缓冲 java流可以从不同的角度对流进行分类: 处理的数据单位不同,可分为:字符流,字节流 数据流方向不同,可分为:输入流,输出流 功能不同,可分为:节点流,处理流 节点流:节点流从一个特定的数据源读写数据。即节点流是直接操作文件,网络等的流,例如FileInputStream和FileOutputStream,他们直接从文件中读取或往文件中写入字节流。 处理流:“连接”在已存在的流(节点流或处理流)之上通过对数据的处理为程序提供更为强大的读写功能。过滤流是使用一个已经存在的输入流或输出流连接创建的,过滤流就是对节点流进行一系列的包装。例如BufferedInputStream和BufferedOutputStream,使用已经存在的节点流来构造,提供带缓冲的读写,提高了读写的效率,以及DataInputStream和DataOutputStream,使用已经存在的节点流来构造,提供了读写Java中的基本数据类型的功能。他们都属于过滤流。 节点流类型常见的有:对文件操作的字符流有FileReader/FileWriter,字节流有FileInputStream/FileOutputStream。 处理流类型常见的有:缓冲流:缓冲流要“套接”在相应的节点流之上,对读写的数据提供了缓冲的功能,提高了读写效率,同事增加了一些新的方法。
  • 打赏
  • 举报
回复
io流可以有以下划分: 1.按照流向的不同,分为输入流和输出流 2.按照处理的数据的单位不同,分为字节流和字符流 3.按照角色的不同,分为节点流(字符流)和处理流,节点流是直接作用在文件上,其他的为处理流,处理流主要用来提高文件处理速度 Writer是字符输出流的抽象基类,FileWriter是个字符流直接作用于文件上,BufferedWriter是个处理流,是用来提高字符输出流输出效率的,所以说在创建这个处理流的时候,必须先要有字符流对象,明确处理的是谁,提高的是谁,这就是包装,装饰模式。
dracularking 2015-11-16
  • 打赏
  • 举报
回复
装饰器模式的类就是都实现了同一个接口,需要的功能可以动态装饰进去
飏飏一蝶 2015-11-16
  • 打赏
  • 举报
回复
引用 2 楼 josephliver的回复:
[quote=引用 1 楼 qq118194716 的回复:] Writer是个抽象类,是FileWriter,BufferedWriter的父类 实际传入的是它的子类,比如FileWriter,然后进行组合包装添加功能 去看看设计模式的装饰(器)模式 你就会明白为什么这么设计了
所以说BufferedWriter就是一个包装类的功能吗,那filewriter构造出来的对象是个什么性质,是一个流吗[/quote] 都是流,功能略有不同的流
josephliver 2015-11-15
  • 打赏
  • 举报
回复
引用 1 楼 qq118194716 的回复:
Writer是个抽象类,是FileWriter,BufferedWriter的父类 实际传入的是它的子类,比如FileWriter,然后进行组合包装添加功能 去看看设计模式的装饰(器)模式 你就会明白为什么这么设计了
所以说BufferedWriter就是一个包装类的功能吗,那filewriter构造出来的对象是个什么性质,是一个流吗
飏飏一蝶 2015-11-15
  • 打赏
  • 举报
回复
Writer是个抽象类,是FileWriter,BufferedWriter的父类
实际传入的是它的子类,比如FileWriter,然后进行组合包装添加功能
去看看设计模式的装饰(器)模式 你就会明白为什么这么设计了

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧