`
gaohuier
  • 浏览: 38252 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

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

    博客分类:
  • Java
 
阅读更多

写文件最佳组合  
  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类的构造函数来创建一个表示...

    oracle认证的java考试(20)

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

    java I/O类的使用

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

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

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

    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 IO流操作详解源代码下载

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

    sort_分类_

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

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

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

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

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

    java输入输出流和反射

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

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

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

    Java Experiment 8(network)

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

    用java写的进行文件处理的代码

    这里创建了两个`File`对象,分别代表了`data1.txt`和`data2.txt`这两个文件。 ##### 4. 文件读写操作 ```java BufferedReader reader1 = null; BufferedReader reader2 = null; PrintWriter pw = null; ``` 使用`...

    JAVA FCB 基础开发包

    4. **FileReader和FileWriter**:这两个类直接与文件进行字符操作,适合简单的文本文件读写。 5. **RandomAccessFile**:此类提供了随机访问文件的能力,允许在文件的任何位置进行读写操作。 6. **NIO(New IO)**...

    Java30道面试题及答案

    在Java中,抽象类和接口的区别是什么?抽象类:1、抽象方法,只有行为的概念,没有具体的行为实现。使用abstract关键字修饰,没有方法体。子类必须重写这些抽象方法。2、包含抽象方法的类,一定是抽象类。3、抽象类...

Global site tag (gtag.js) - Google Analytics