`
cii001
  • 浏览: 24537 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

PrintWriter和FileWriter这两个类有什么区别(转)

    博客分类:
  • java
 
阅读更多

源地址:http://blog.sina.com.cn/s/blog_9989f1120101310n.html

 

写文件最佳组合   
  PrintWriter   out   =   new   PrintWriter(   
          new   BufferedWriter(   
                new   FileWriter(filename)))   
  PrintWriter   提供print系方法   
  BufferedWriter   提供缓冲,用以加速   
  FileWriter   用于写文件

====================================

PrintWriter以字符为单位,支持汉字,   
  OutputStreamWriter以字节为单位,不支持汉字,  

====================================

 

PrintWriter和BufferedWriter都是继承java.io.Writer,所以很多功能都一样。不过PrintWriter提供println()方法可以写不同平台的换行符,而BufferedWriter可以任意设定缓冲大小。   
  OutputStream可以直接传给PrintWriter(BufferedWriter不能接收),如:   
  PrintWriter   out   
        =   new   PrintWriter(new   BufferedOutputStream(new   FileOutputStream("foo.out")));   
  或者用OutputStreamWriter来将OutputStream转化为Wrtier.这时就可以用BufferedWriter了。   
  API   documents中都写的很清楚了。

==============================================

3.PrintStream类和PrintWriter类   
    PrintStream类是过滤器类中一个不可忽视的成员,最基本的标准输出就要借助于它——我们常用的System.out变量就是PrintStream实例。与之对应的字符流类是PrintWriter类。   
    PrintStream有两个构造函数(在新版API中已标记为过时):   
    ■public   PrintStream(OutputStream   out)   
    ■public   PrintStream(OutputStream   out,boolean   autoFlush)   
  其中,autoFlush置为true时,每当输出遇到换行符,缓冲区的内容就被强制全部输出,如同调用了一次flush()。但要注意,如果没遇到换行符,还是会有数据“憋”在缓冲区里。   
    方法(已熟悉的就不解释):   
    ■public   void   write(int   b)   
    ■public   void   write(byte   b,int   offset,int   length)   
    ■public   void   flush()   
    ■public   void   close()   
    ■public   void   print(Object   obj)   
    这个方法功能是非常强大的,它可以输出任何对象,而不必另加说明。此外print()方法有许多重载形式,即有多种参数。它们是字符串(String)、字符数组(char[])、字符(char)、整数(int)、长整数(long)、浮点数(float)、双精度浮点数(double)、布尔值(boolean)。其中,输出多个数单位的print()方法(也就是指参数为String和char[]的)是同步(synchronized)方法。   
    ■public   void   println()输出一个换行符。   
    ■public   synchronized   void   println(Object   obj)   
    println()方法有9个重载形式,几乎就是print()方法的翻版。唯一的区别在于println()方法都是同步的。   
    ■public   boolean   checkError()   
    检查输出过程中有什么错误,如有,返回true值。只要输出流中出现一次错误,则出错后的任意对checkError()的调用均会返回真值。   
    下面介绍PrintWriter类。   
    如同第二节中所说,PrintWriter是JDK1.1版增加了与字节流I/O相对应的字符流I/O。但是,为了保持兼容性,原先的类几乎没有改动。再加之调试的需要,PrintStream类被保留,并且System类中的成员变量out、err仍作为它的对象。然而,PrintWriter用于大多数输出比PrintStream更为合适。因此1.1版的API中建议新开发的代码使用PrintWriter类,并将   PrintStream类的两个构造函数标记为过时。这样,虽然使用System.out输出不会产生问题,在程序中创建新的PrintStream对象时却会产生编译时的警告。   
    PrintWriter类与PrintStream类的方法是对应的。有一个不同之外需提请读者注意,就是当前者的自动清空缓冲区的功能被使能时(构造函数中autoFlush置为true),仅当println()方法被调用时才自动清缓冲区,而不是像PrintStream一样遇到一个换行符就清缓冲。

分享到:
评论

相关推荐

    WriteTextFiles.rar

    在Java编程语言中,`PrintWriter`和`FileWriter`都是用于向文件写入文本的类,它们在处理文本输出时各有特点。本教程将详细探讨这两个类的使用方法、异同以及如何在实际编程中结合运用。 首先,让我们了解`...

    Java IO 工具类大全

    这两个类提供了读写基本数据类型(如int、float、double)的能力,方便了数据的序列化和反序列化。 八、ObjectInputStream和ObjectOutputStream 用于对象的序列化和反序列化,可以将Java对象转换为字节流,保存到...

    面试题:把a.txt、b.txt文件合并写到c.txt文件

    这是一个典型的文件读取、合并以及写入的操作,涉及到Java中的File类、BufferedReader和PrintWriter等核心组件。 首先,我们需要创建File对象来表示文件路径。在Java中,可以使用File类的构造函数来创建一个表示...

    java I/O类的使用

    这两个家族的类都定义了基本的`read()`和`write()`方法,但通常不会直接使用,而是通过装饰器模式与其他类结合以提供更高级别的功能。 `Reader`和`Writer`类族处理字符流,它们是基于`InputStream`和`OutputStream`...

    oracle认证的java考试(20)

    题目要求比较`BufferedWriter`和`FileWriter`两个类,并找出其中一个具有但另一个没有的方法。 - **选项分析**: - A. 关闭流(`close()`):两个类都有此方法。 - B. 刷新流(`flush()`):两个类也都有此方法。 - ...

    java IO流操作详解源代码下载

    这两个类分别用于读取和写入文件。例如,你可以使用FileInputStream从文件读取字节,并通过FileOutputStream将这些字节写入另一个文件。在实际操作中,通常会配合使用BufferedInputStream和BufferedOutputStream进行...

    用Java字符流类实现数据操作.pdf

    1. `FileReader`和`FileWriter`:这两个类分别用于读取和写入文件内容。它们直接与文件系统交互,可以方便地进行文件的数据操作。 2. `CharArrayReader`和`CharArrayWriter`:它们用于处理字符数组,作为数据的来源...

    Java IO操作和将字符串解析为数值数组

    本文将深入探讨这两个主题,并结合提供的两个文件名`TestWriteD.java`和`TestSplitD.java`进行分析。 首先,Java IO操作包括对文件、网络、系统流等的读写操作。核心类库提供了一系列接口和类,如`InputStream`、`...

    FileWriter

    - `FileWriter(String fileName, boolean append)`和`FileWriter(File file, boolean append)`:这两个构造函数接受一个布尔值`append`,如果为`true`,则会在文件末尾追加内容,而不是覆盖原有内容。 **2. 主要...

    Java 30道面试题及答案.docx

    常用的IO类有FileInputStream、FileOutputStream、BufferedInputStream、BufferedOutputStream、PrintWriter、FileReader、FileWriter、BufferedReader、BufferedWriter、ObjectInputStream、ObjectOutputStream等。...

    Java中文件的输入与输出.pdf

    由于这两个类是抽象的,不能直接实例化,所以我们通常会使用它们的子类来完成实际操作。例如,`FileReader`和`FileWriter`分别继承自`InputStreamReader`和`OutputStreamWriter`,进一步包装了`BufferedReader`和`...

    java输入输出流和反射

    这两个类提供了readObject()和writeObject(Object obj)方法,使得对象可以被序列化和反序列化。 Java反射API是Java语言强大的特性之一,它允许程序在运行时动态地获取类的信息(如类名、字段、方法等)并进行操作。...

    sort_分类_

    在Java中,可以使用System.out.println()进行控制台输出,或者使用FileWriter和PrintWriter类将结果写入文件。 6. **性能优化**:对于大量数据的排序和分类,可能需要考虑算法的效率,例如快速排序、归并排序等...

    08.会员版(2.0)-就业课(2.0)-File类与IO流.zip

    会员版(2.0)-就业课(2.0)-File类与IO流.zip"这个压缩包中,包含了一系列关于这两个主题的教程,旨在帮助初学者和有经验的开发者更深入地理解如何在Java环境中进行文件操作和流处理。 **File类**: File类是Java.io...

    《Java程序设计》上机实验报告实验五流、文件及基于文本的应用.pdf

    实验分为两个部分,旨在加深对Java流和文件处理的理解。 实验的第一个任务是编写一个Java应用程序,该程序接受用户输入的10个整数,并找出其中的最大值和最小值。这个程序的核心在于数据流的读取,通过`...

    资料课件\JAVA 上课幻灯\

    这两个类都是直接或间接继承自`InputStream`和`OutputStream`,提供了读写文件的基本功能。 `ByteArrayInputStream`和`ByteArrayOutputStream`:它们分别用于从字节数组读取数据和向字节数组写入数据。在内存操作...

    Java Experiment 8(network)

    - **`InputStream`与`OutputStream`**:这两个是所有字节流的基类,分别用于读取和写入字节数据。 - **`FileInputStream`与`FileOutputStream`**:用于从文件读取或向文件写入字节流。 - **`Reader`与`Writer`**:...

    POI 解析excel,转成html页面(支持excel03和07)包括style

    由于我们要支持 Excel 2003 和 2007,我们将使用这两个接口。 **二、准备工作** 在开始编码之前,确保已将 Apache POI 添加到你的项目依赖中。如果你使用 Maven,可以在 `pom.xml` 文件中添加以下依赖: ```xml ...

    观看韩顺平Java的 所做的笔记 到数据库中 其中里面有我很多心得 老手可以用来复习 新手可以用学习 也可以当做参考 来做笔记

    `FileReader`和`FileWriter`是这两个基类的子类,用于读写文本文件。`FileReader`的`read()`方法可以读取单个字符,`FileWriter`的`write()`方法可以写入单个字符或字符串。`FileWriter`的构造函数同样有覆盖模式和...

Global site tag (gtag.js) - Google Analytics