写文件最佳组合
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一样遇到一个换行符就清缓冲。
分享到:
相关推荐
在Java编程语言中,`PrintWriter`和`FileWriter`都是用于向文件写入文本的类,它们在处理文本输出时各有特点。本教程将详细探讨这两个类的使用方法、异同以及如何在实际编程中结合运用。 首先,让我们了解`...
这两个类提供了读写基本数据类型(如int、float、double)的能力,方便了数据的序列化和反序列化。 八、ObjectInputStream和ObjectOutputStream 用于对象的序列化和反序列化,可以将Java对象转换为字节流,保存到...
这是一个典型的文件读取、合并以及写入的操作,涉及到Java中的File类、BufferedReader和PrintWriter等核心组件。 首先,我们需要创建File对象来表示文件路径。在Java中,可以使用File类的构造函数来创建一个表示...
题目要求比较`BufferedWriter`和`FileWriter`两个类,并找出其中一个具有但另一个没有的方法。 - **选项分析**: - A. 关闭流(`close()`):两个类都有此方法。 - B. 刷新流(`flush()`):两个类也都有此方法。 - ...
这两个家族的类都定义了基本的`read()`和`write()`方法,但通常不会直接使用,而是通过装饰器模式与其他类结合以提供更高级别的功能。 `Reader`和`Writer`类族处理字符流,它们是基于`InputStream`和`OutputStream`...
1. `FileReader`和`FileWriter`:这两个类分别用于读取和写入文件内容。它们直接与文件系统交互,可以方便地进行文件的数据操作。 2. `CharArrayReader`和`CharArrayWriter`:它们用于处理字符数组,作为数据的来源...
- `FileWriter(String fileName, boolean append)`和`FileWriter(File file, boolean append)`:这两个构造函数接受一个布尔值`append`,如果为`true`,则会在文件末尾追加内容,而不是覆盖原有内容。 **2. 主要...
常用的IO类有FileInputStream、FileOutputStream、BufferedInputStream、BufferedOutputStream、PrintWriter、FileReader、FileWriter、BufferedReader、BufferedWriter、ObjectInputStream、ObjectOutputStream等。...
由于这两个类是抽象的,不能直接实例化,所以我们通常会使用它们的子类来完成实际操作。例如,`FileReader`和`FileWriter`分别继承自`InputStreamReader`和`OutputStreamWriter`,进一步包装了`BufferedReader`和`...
这两个类分别用于读取和写入文件。例如,你可以使用FileInputStream从文件读取字节,并通过FileOutputStream将这些字节写入另一个文件。在实际操作中,通常会配合使用BufferedInputStream和BufferedOutputStream进行...
在Java中,可以使用System.out.println()进行控制台输出,或者使用FileWriter和PrintWriter类将结果写入文件。 6. **性能优化**:对于大量数据的排序和分类,可能需要考虑算法的效率,例如快速排序、归并排序等...
本文将深入探讨这两个主题,并结合提供的两个文件名`TestWriteD.java`和`TestSplitD.java`进行分析。 首先,Java IO操作包括对文件、网络、系统流等的读写操作。核心类库提供了一系列接口和类,如`InputStream`、`...
实验分为两个部分,旨在加深对Java流和文件处理的理解。 实验的第一个任务是编写一个Java应用程序,该程序接受用户输入的10个整数,并找出其中的最大值和最小值。这个程序的核心在于数据流的读取,通过`...
这两个类提供了readObject()和writeObject(Object obj)方法,使得对象可以被序列化和反序列化。 Java反射API是Java语言强大的特性之一,它允许程序在运行时动态地获取类的信息(如类名、字段、方法等)并进行操作。...
`FileReader`和`FileWriter`是这两个基类的子类,用于读写文本文件。`FileReader`的`read()`方法可以读取单个字符,`FileWriter`的`write()`方法可以写入单个字符或字符串。`FileWriter`的构造函数同样有覆盖模式和...
- **`InputStream`与`OutputStream`**:这两个是所有字节流的基类,分别用于读取和写入字节数据。 - **`FileInputStream`与`FileOutputStream`**:用于从文件读取或向文件写入字节流。 - **`Reader`与`Writer`**:...
这里创建了两个`File`对象,分别代表了`data1.txt`和`data2.txt`这两个文件。 ##### 4. 文件读写操作 ```java BufferedReader reader1 = null; BufferedReader reader2 = null; PrintWriter pw = null; ``` 使用`...
4. **FileReader和FileWriter**:这两个类直接与文件进行字符操作,适合简单的文本文件读写。 5. **RandomAccessFile**:此类提供了随机访问文件的能力,允许在文件的任何位置进行读写操作。 6. **NIO(New IO)**...
在Java中,抽象类和接口的区别是什么?抽象类:1、抽象方法,只有行为的概念,没有具体的行为实现。使用abstract关键字修饰,没有方法体。子类必须重写这些抽象方法。2、包含抽象方法的类,一定是抽象类。3、抽象类...