java.io包

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去掉 毫无影响且可以指定字符集。

总结:PrintWriter是一个非常实用的输出流,下一篇我将介绍一个非常实用的输入流Scanner

学习PrintWriter类 .的更多相关文章

  1. Java虚拟机JVM学习07 类的卸载机制

    Java虚拟机JVM学习07 类的卸载机制 类的生命周期 当Sample类被加载.连接和初始化后,它的生命周期就开始了. 当代表Sample类的Class对象不再被引用,即不可触及时,Class对象就 ...

  2. Java虚拟机JVM学习04 类的初始化

    Java虚拟机JVM学习04 类的初始化 类的初始化 在初始化阶段,Java虚拟机执行类的初始化语句,为类的静态变量赋予初始值. 在程序中,静态变量的初始化有两种途径: 1.在静态变量的声明处进行初始 ...

  3. Java虚拟机JVM学习02 类的加载概述

    Java虚拟机JVM学习02 类的加载概述 类的加载 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对 ...

  4. Java学习-023-Properties 类 XML 配置文件读取及写入源代码

    之前的几篇 Properties 文章已经讲述过了 Java 配置文件类 Properties 的基本用法,查看 JDK 的帮助文档时,也可看到在 Properties 类中还有两个方法 loadFr ...

  5. 再次学习C++类之构造函数

    学习C++类,首先要说C中的结构体,虽然C++类扩展了C中的结构体,可以添加成员函数,但他们是有区别的.在结构体中,成员变量.成员函数都是公有的,而类中,一般是成员变量是私有的,成员函数是公有的,私有 ...

  6. (转) 学习C++ -> 类(Classes)的定义与实现

    学习C++ -> 类(Classes)的定义与实现 一."类" 的介绍    在C++中, 用 "类" 来描述 "对象", 所谓的&q ...

  7. Javascript学习6 - 类、对象、继承

    原文:Javascript学习6 - 类.对象.继承 Javasciprt并不像C++一样支持真正的类,也不是用class关键字来定义类.Javascript定义类也是使用function关键字来完成 ...

  8. Python学习:类和实例

    Python学习:类和实例 本文作者: 玄魂工作室--热热的蚂蚁 类,在学习面向对象我们可以把类当成一种规范,这个思想就我个人的体会,感觉很重要,除了封装的功能外,类作为一种规范,我们自己可以定制的规 ...

  9. 《python基础教程(第二版)》学习笔记 类和对象(第7章)

    <python基础教程(第二版)>学习笔记 类和对象(第7章) 定义类class Person:    def setName(self,name):        self.name=n ...

随机推荐

  1. lunix安装jdk(rpm格式)

    1.下载后,首先把jdk-7u3-linux-x64.rpm复制到/usr/local/src#cp jdk-7u3-linux-x64.rpm /usr/local/src/2.给所有用户添加可执行 ...

  2. python计算机视觉1:基本操作与直方图

    本文主要内容来源于书籍<python计算机视觉编程> 我是一名初学者,如果你发现文中有错误,请留言告诉我,谢谢 PIL模块 PIL模块全程为Python Imaging Library,是 ...

  3. HDU 4009 Transfer water

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4009 题意:给出一个村庄(x,y,z).每个村庄可以挖井或者修建水渠从其他村庄得到水.挖井有一个代价, ...

  4. JAVA Stack栈和Heap堆的区别(转)

          首先分清楚Stack,Heap的中文翻译:Stack—栈,Heap—堆.         在中文里,Stack可以翻译为“堆栈”,所以我直接查找了计算机术语里面堆和栈开头的词语:      ...

  5. logstash 防止实际处理时间跟事件产生时间略有偏差

    "message" => " 10.168.255.134 [12/Sep/2016:16:30:40 +0800] \"GET /resources/p ...

  6. voijs1883 月光的魔法

    背景 影几欺哄了众生了天以外——月儿何曾圆缺 描述 有些东西就如同月光的魔法一般. Luke是爱着vijos的.他想为自己心爱的东西画些什么. 就画N个圆吧.把它们的圆心都固定在x轴上. 圆与圆.为了 ...

  7. Sql Server 2005的1433端口打开和进行远程连接

    参考地址:http://topic.csdn.net/u/20090828/16/e693935a-99b7-4090-a6bc-0123c91183eb.html 1.如何打开sql server  ...

  8. hdu 5611 Baby Ming and phone number(模拟)

    Problem Description Baby Ming collected lots of cell phone numbers, and he wants to sell them for mo ...

  9. mvc初学controller参数传递感想

    从视图中传递参数给controller也有很多种方式 方法一(推荐):路由 config.Routes.MapHttpRoute( name: "DefaultApi", rout ...

  10. 导致flash屏幕重绘的几种方式及避免重绘的方法

    导致屏幕重绘的几种原因: 1.最常见的是情况就是舞台上的可视组件在形状.位置.状态(alpha, scale…)发生改变的时候会触发Flash Player 的重绘. 2.当一个DisplayObje ...