您的位置:首页 > 编程语言 > Java开发

Java IO学习笔记六

2017-05-25 22:20 281 查看

打印流

在整个
IO
包中,打印流是输出信息最方便的类,主要包含字节打印流
PrintStream
)和字符打印流
PrintWrite
)。打印流提供了非常方便的打印功能,可以打印任何的数据类型,例如:小数、整数、字符串等等,相对于前面学习的几个文件的操作来说,这里的打印流是最简便的一个类了

PrintStream

主要功能是格式化的将内容写入文件,并不是打印在控制台上

PrintStream
最大的好处就是可以格式化的输出,相信学过
c
的朋友都知道
prinf
这格式化输出函数,这里的
PrintStream
实现了更加简单的格式化输出,不需要使用什么
%d
,
%f
了,只需要都是用
%s
即可,这个很像
python


PrintStream
打印的所有字符都使用平台的默认字符编码转换为字节。在需要写入字符而不是写入字节的情况下,应该使用
PrintWriter
类。

构造函数

PrintStream(File file)
创建具有指定文件且不带自动行刷新的新打印流。

PrintStream(OutputStream out)
创建新的打印流。

PrintStream(OutputStream out, boolean autoFlush)
创建新的打印流,并且设置自动刷新

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

File file_2=new File("/tmp"+File.separator+"test"+File.separator+"test.txt");
PrintStream printStream=new PrintStream(file_2);  //直接使用File
PrintStream printStream=new PrintStream(new FileOutputStream(file_2));  //使用OutputStream的子类FileOutputStream


常用的函数

PrintStream append(char c)
在此输入流的后面追加字符。

PrintStream  append(CharSequence csq)
将指定字符序列添加到此输出流。

PrintStream  append(CharSequence csq, int start, int end)
将指定字符序列的子序列添加到此输出流。

print()
打印常用的数据类型,比如
String
,
char
,
int
,
double
,
float
,
boolean
,
long
,
short


println()
打印常用的数据类型,但是带有换行符

printf(String format, Object... args)
使用指定格式字符串和参数将格式化的字符串写入此输出流的便捷方法。

format(String format, Object... args)
使用指定格式字符串和参数将格式化字符串写入此输出流中。

close()


flush()


实例

package IO;

import java.io.*;

/**
* Created by chenjiabing on 17-5-25.
*/

/**test.txt文件中的结果如下:
陈加兵
2299.9
姓名:陈加兵,n年龄:22,成绩:99.9
姓名:陈加兵,n年龄:22,成绩:99.9
c
chenjiabi
*/

public class demo9 {
public static void main(String[] args) {
PrintStream printStream = null;
File file_1 = new File("/tmp" + File.separator + "test");
File file_2 = new File("/tmp" + File.separator + "test" + File.separator + "test.txt");
if (!file_1.exists()) {
file_1.mkdir();
System.out.println("文件创建成功");
}

try {
//            PrintStream printStream=new PrintStream(file_2);
printStream = new PrintStream(new FileOutputStream(file_2));
String name = "陈加兵";
int age = 22;
float grade = 99.9f;

printStream.println(name);//println()

printStream.print(age);//print()

printStream.println(grade);//print()

printStream.format("姓名:%s,n年龄:%s,成绩:%s%s", name, age, grade, "\n");//format()

printStream.printf("姓名:%s,n年龄:%s,成绩:%s%s", name, age, grade, "\n");

printStream.append('c');   //append
printStream.append("\nchenjiabing",0,10);  //append
} catch (FileNotFoundException e) {
e.printStackTrace();
} finally {
if (printStream != null) {
printStream.flush();
printStream.close();
}
}

}
}


PringWriter

继承
Writer
,主要针对的是字符流的操作

向文本输出流打印对象的格式化表示形式。此类实现在
PrintStream
中的所有
print
方法。它不包含用于写入原始字节的方法,对于这些字节,程序应
4000
该使用未编码的字节流进行写入。

PrintStream
类不同,如果启用了自动刷新,则只有在调用
println
printf
format
的其中一个方法时才可能完成此操作,而不是每当正好输出换行符时才完成。这些方法使用平台自有的行分隔符概念,而不是换行符。

此类中的方法不会抛出
I/O
异常,尽管其某些构造方法可能抛出异常。客户端可能会查询调用
checkError()
是否出现错误。

构造函数

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


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


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


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


常用函数

这里的常用到的函数和
PrintStream
的差不多就不再详细的列出来了,详情请看帮助文档

实例

package IO;

import java.io.*;

/**
* Created by chenjiabing on 17-5-25.
*/
public class demo10 {
public static void main(String[] args)
{
PrintWriter printWriter=null;
File file=new File("/tmp"+File.separator+"test"+File.separator+"file.txt");
try {
printWriter=new PrintWriter(new FileOutputStream(file));
printWriter.println("chenjiabing");
printWriter.println("陈加兵");
}catch (IOException e)
{
e.printStackTrace();
}finally {
if(printWriter!=null)
{
printWriter.close();
}
}

}
}


参考文章

http://www.cnblogs.com/lich/archive/2011/12/11/2284093.html

http://tool.oschina.net/uploads/apidocs/jdk-zh/java/io/PrintWriter.html

http://tool.oschina.net/uploads/apidocs/jdk-zh/java/io/PrintStream.html

http://blog.csdn.net/yyyandroid/article/details/7756390
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 格式化 IO 打印流