Java拾贝第十二天——IO流之打印流
Java拾贝不建议作为0基础学习,都是本人想到什么写什么
在整个IO包中,打印流是输出信息最方便的类。
主要包括字节打印流(PrintStream)和字符打印流(PrintWriter)
打印流没有输入流,所以没有输入输出这个说法,都是输出
PrintStream
字节打印流属于OutputStream的子类,PrintStream的构造方法:
public PrintStream(OutputStream out)//根据多态性 可以传入OutputStream的子类
public PrintStream(OutputStream out, boolean autoFlush) //这个布尔值是自动刷新缓冲区
public PrintStream(File file) throws FileNotFoundException//直接传入File对象
想要追加内容须使用public FileOutputStream(String name, boolean append)有参构造
PrintStream常用方法如下:
方法 | 类型 | 描述 |
---|---|---|
public void print(Object obj) | 普通方法 | 该方法被重载多次,输出任意数据 |
public void println(Object x) | 普通方法 | 该方法被重载多次,输出任意数据后换行 |
public PrintStream printf(Locale l, String format, Object ... args) | 普通方法 | 根据传入的格式,进行格式化输出 |
print(Object obj)
输出任意数据。该方法被重载了很多次,如下图:
D:\IOtest\text.txt内:
//空
栗子:
public static void main(String[] args) {
File file = new File("D:" + File.separator + "IOtest" + File.separator + "text.txt");
try {
PrintStream stream = new PrintStream(file);
stream.print("hello\r\nworld!");//要手动换行
stream.print(12.3);
stream.print(true);
stream.flush();
stream.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
程序运行后,D:\IOtest\text.txt内:
hello
world!12.3true
println(Object x)
输出任意数据后换行。该方法被重载了很多次,如下图:
D:\IOtest\text.txt内:
hello
world!12.3true
栗子:
public static void main(String[] args) {
File file = new File("D:" + File.separator + "IOtest" + File.separator + "text.txt");
try {
PrintStream stream = new PrintStream(new FileOutputStream(file, true), true);
//想要追加内容须使用public FileOutputStream(String name, boolean append)有参构造
//这里第二个布尔值是自动刷新缓冲区
stream.println();//只输出换行符
stream.println("撒旦静安寺点击");
stream.println("1111111111.99");
stream.println(false);
stream.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
程序运行后,D:\IOtest\text.txt内:
hello
world!12.3true
撒旦静安寺点击
1111111111.99
false
printf(Locale l, String format, Object ... args)
根据传入的格式进行格式化输出。
格式化表如下:
字符 | 描述 |
---|---|
%s | 字符串 |
%d | 整数 |
%f | 小数 |
%c | 单字符 |
D:\IOtest\text.txt内:
hello
world!12.3true
撒旦静安寺点击
1111111111.99
false
栗子:
public static void main(String[] args) {
String name="法外狂徒-张三";
int age=26;
double money=999.99;
char sex='M';
File file = new File("D:" + File.separator + "IOtest" + File.separator + "text.txt");
try {
PrintStream stream = new PrintStream(new FileOutputStream(file, true), true);
stream.println();//只输出换行符
stream.printf("外号:%s +年龄:%d +财产:%f +性别:%c",name,age,money,sex);
stream.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
程序运行后,D:\IOtest\text.txt内:
hello
world!12.3true
撒旦静安寺点击
1111111111.99
false
外号:法外狂徒-张三 +年龄:26 +财产:999.990000 +性别:M
//很多0是浮点数精确度问题。
也可以全部用字符串接收
栗子:
public static void main(String[] args) {
String name="法外狂徒-张三";
int age=26;
double money=999.99;
char sex='M';
File file = new File("D:" + File.separator + "IOtest" + File.separator + "text.txt");
try {
PrintStream stream = new PrintStream(new FileOutputStream(file, true), true);
stream.println();//只输出换行符
stream.printf("外号:%s +年龄:%s +财产:%s +性别:%s",name,age,money,sex);
stream.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
程序运行后,D:\IOtest\text.txt内:
hello
world!12.3true
撒旦静安寺点击
1111111111.99
false
外号:法外狂徒-张三 +年龄:26 +财产:999.990000 +性别:M
外号:法外狂徒-张三 +年龄:26 +财产:999.99 +性别:M
字符打印流
字符打印流属于Writer的子类,PrintWriter的构造方法:
public PrintWriter (Writer out)//想要追加内容须调用FileWriter的有参构造
public PrintWriter(Writer out,boolean autoFlush)//一样的 还是自动刷新缓冲区
public PrintWriter(OutputStream out)//还可以接收字节流
想要追加内容须使用可以使用FileOutputStream或FileWriter的有参构造,根据构造方法这两种类型都能接收
PrintWriter常用方法如下:
方法 | 类型 | 描述 |
---|---|---|
public void write(int c) | 普通方法 | 该方法被重载多次,输出任意字符 |
public void print(Object obj) | 普通方法 | 该方法被重载多次,输出任意数据 |
public void println(Object x) | 普通方法 | 该方法被重载多次,输出任意数据后换行 |
public PrintWriter printf(String format, Object ... args) | 普通方法 | 根据传入的格式,进行格式化输出 |
栗子就不举了和字节打印流大差不差的。