PrintWriter

转载 2016年05月31日 10:03:57

Java.io包

8种:行刷新 字符流或字节流  文件名 文件名和字符集

1)首先先知道它的八种构造方法,但怎么记住这八种呢?我们都知道PrintWriter是一种过滤流,也叫处理流。也就是能对字节流和字符流进行处理,所以它会有:

PrintWriter(OutputStream out)  根据现有的 OutputStream 创建不带自动行刷新的新 PrintWriter。

PrintWriter(Writer out)  创建不带自动行刷新的新 PrintWriter。

  这两种构造方法。由于PrintWriter能够实现自动刷新所以又衍生出另两种:

PrintWriter(OutputStream out, boolean autoFlush)  通过现有的 OutputStream 创建新的 PrintWriter。

PrintWriter(Writer out, boolean autoFlush)  创建新 PrintWriter

  true代表能自动刷新。注意这四种均不能指定编码集,但PrintStream中对OutprintStream操作时是可以的。【其中原因我不知,有知道的朋友欢迎指教】。

  然后PrintWriter能够直接对文件操作,所以还有这两种构造方法:

PrintWriter(File file) 使用指定文件创建不具有自动行刷新的新 PrintWriter。

PrintWriter(String fileName)  创建具有指定文件名称且不带自动行刷新的新 PrintWriter。


  注意该构造方法无法指定能否自动刷新,但可以指定字符集所以又衍生出两种:

PrintWriter(File file, String csn)  创建具有指定文件和字符集且不带自动刷行新的新 PrintWriter。

PrintWriter(String fileName, String csn)  创建具有指定文件名称和字符集且不带自动行刷新的新 PrintWriter。


2)熟记这八种构造方法,你可以随心构造你需要的PrintWriter对象了(假如为pw)。那它实现了什么接口呢?

1.Closeable接口, 所以它有pw.close()方法来实现对PrintWriter的关闭。

2.Flushable接口,所以它有pw.flush()方法来实现人为的刷新。

3.Appendable接口,所以它有pw.append(char c)方法来向此输出流中追加指定字符,等价于print().

3)下面就是它的方法。

返回类型为PrintWriter的方法

append(char c)

format(String regex,Object args)以指定格式的字符串和参数写入PrintWriter,我个人认为等同于printf

printf()

返回类型为void的方法

println(Object obj)打印obj,可以是基本数据类型或对象,并换行

print(Object obj)同上,但不换行

write(int i) 写入单个字符i

write(char[] buf)  写入字符数组。

write(char[] buf, int off, int len)  写入字符数组的某一部分。

write(String s) 写入字符串 

write(String s, int off, int len)写入字符串的某一部分

个人认为:write()方法与print()方法基本一致 但是write(char[] buf, int off, int len)print()不行。但笔者推荐使用Print系列方法,这正是PrintWriter类的价值所在。

返回类型为boolean类型的方法

checkError() 刷新流并检查其错误状态

4)举例:

import java.io.IOException;
import java.io.PrintWriter;
import java.io.FileWriter;
import java.io.File;


public class PrintWriterDemo {

public static void main(String[] args) {
PrintWriter pw = null;
String name = "张松伟";
int age = 22;
float score = 32.5f;
char sex = '男';
try{
pw = new PrintWriter(new FileWriter(new File("e:\\file.txt")),true);
pw.printf("姓名:%s;年龄:%d;性别:%c;分数:%5.2f;", name,age,sex,score);
pw.println();
pw.println("多多指教");
pw.write(name.toCharArray());
}catch(IOException e){
e.printStackTrace();
}finally{
pw.close();
}
}
}

上面这个例子中呢,完全可以把pw = new PrintWriter(new FileWriter(new File("e:\\file.txt")),true);中的new  FileWrite去掉 毫无影响且可以指定字符集。


什么是自动行刷新:

在没有刷新前,你写入的数据并没有真正写入文件,只是保存在内存中。刷新后才会写入文件,如果程序中没有调用刷新方法,当程序执行完时会自动刷新,也就是只有到数据全部执行完才会一次性写入,大数据量时对运行效率有影响。
创建不具有自动行刷新的对象,就是用这个对象写入数据时不会自动刷新。

相关文章推荐

java写入txt PrintWriter FileOutputStream

  • 2009年12月15日 17:24
  • 740B
  • 下载

StringWriter/PrintWriter在Java输出异常信息中的作用

闲来无事,看看JUnit的源代码。刚刚开始看就发现一段有趣的代码: public String trace() { StringWriter stringWriter = new St...

Java疑问:-------在Socket中用PrintWriter 写入的数据为什么用DataInputStream不能读取?

在Socket中用PrintWriter 写入的数据为什么用DataInputStream不能读取? 原因是什么???  其本质原因是什么??? : /*  * 功能:是一个服务器,...
  • H002399
  • H002399
  • 2015年08月06日 15:54
  • 1143

Java PrintWriter无法写入的问题

项目日志出现莫名其妙的缺失,从当天某个时间段之后日志就全部没有了。日志每3秒写入一次,文件最后的修改时间距离日志最后记录的时间相差几分钟,排除人为删除的因素之后,技术层面发现了一些问题。...

“黑马程序员"Properties PrintWriter 合并流 切割

----- http://www.itheima.com" target="blank">android培训、http://www.itheima.com" target="blank">java培训...

24. Java IO: Reader-Writer && Java IO: PrintWriter

Java IO: Reader在java IO API里,Java Reader类(java.io.Reader)是所有Reader子类的基类。Reader像InputStream一样,除了它是基于字...

OutputStreamWriter,InputStreamReader,PrintWriter,BufferedReader

package day20150904;import java.io.FileNotFoundException; import java.io.FileOutputStream; import ja...
  • wahxsm
  • wahxsm
  • 2015年09月01日 16:41
  • 364

(91)PrintWriter、SequenceInputStream(合并、切割)

如题

java.io.PrintWriter

基本方法: PrintWriter(File file):为指定的文件对象创建一个指定的PrintWriter对象 PrintWriter(String filename):未指定的文件名字字...

字节打印流PrintStream,字符打印流PrintWriter,序列流SequenceInputStream、

PrintStream:字节打印流   1 提供了打印方法可以对多种数据类型值进行打印。并保持数据的表示形式   2 打印方法不抛IOException      构造函数,接收三种类型的值:   1...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:PrintWriter
举报原因:
原因补充:

(最多只允许输入30个字)