Java IO学习笔记六

时间:2023-02-25 21:16:20

打印流

  • 在整个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();
}
}


}
}

PrintWriter

  • 继承Writer,主要针对的是字符流的操作
  • 向文本输出流打印对象的格式化表示形式。此类实现在 PrintStream中的所有 print 方法。它不包含用于写入原始字节的方法,对于这些字节,程序应该使用未编码的字节流进行写入。
  • PrintStream 类不同,如果启用了自动刷新,则只有在调用 printlnprintfformat 的其中一个方法时才可能完成此操作,而不是每当正好输出换行符时才完成。这些方法使用平台自有的行分隔符概念,而不是换行符。
  • 此类中的方法不会抛出 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();
}
}

}
}

参考文章