在完成对C语言的学习后,我最近开始了对C++和Java的学习,目前跟着视频学习了一些语法,也跟着敲了一些代码,有了一定的掌握程度。现在将跟着视频做的笔记进行整理。本篇博客是整理Java知识点的第二十六篇博客。
本篇博客介绍了Java的标准输入输出流和打印流。
本系列博客所有Java代码都使用IntelliJ IDEA编译运行,版本为2022.1。所用JDK版本为JDK11。
目录
标准输入输出流
标准输入流
System类中有两个静态成员变量。
public static final InputStream in是标准输入流,通常用于键盘输入或由主机环境或用户指定的另一个输入源。
public static final PrintStream out是标准输出流,通常用于显示输出或者主机环境或用户指定的另一个输出目标。
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.BufferedReader;
public class stdinput {
public static void main(String[] args) throws IOException {
InputStream is = System.in;
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
System.out.println("Please enter a string: ");
String s;
s = br.readLine();
System.out.println("The string is " + s);
System.out.println("Please enter a int");
int i;
i = Integer.parseInt(br.readLine());
System.out.println("The int is " + i);
br.close();
}
}
这段代码封装了一个输入流,首先将一个InputStream流赋值为System.in,然后将其作为参数用于创建InputStreamReader流,然后再封装成一个BufferedReader流对象br。然后就可以通过br进行输入。
下面是程序的一个运行示例:
Please enter a string:
Hello Java
The string is Hello Java
Please enter a int
10
The int is 10
这样用起来很麻烦,Java提供了Scanner类用于键盘录入。
标准输出流
import java.io.PrintStream;
public class stdoutput {
public static void main(String[] args){
PrintStream ps = System.out;
ps.println("Hello Java");
ps.println(14);
ps.close();
}
}
程序创建了一个PrintStream流对象ps,赋值为System.out。随后可以用ps流进行输出。程序的输出结果是:
Hello Java
14
输出语句的本质是一个标准的输出流。
打印流
字节打印流
打印流分为字节打印流和字符打印流。打印流只负责输出数据,不负责读取数据。
PrintStream是字节打印流。使用PrintStream需要导包,import java.io.PrintStream
PrintStream(String fileName)使用指定的文件名创建新的打印流。
使用继承父类的方法写数据,查看的时候会进行转码。使用自己特有的方法写数据,查看的数据原样输出。
import java.io.FileNotFoundException;
import java.io.PrintStream;
public class output1 {
public static void main(String[] args) throws FileNotFoundException {
PrintStream ps = new PrintStream("test3.txt");
ps.write(49);
ps.write(52);
ps.write(10);
ps.println("This is about 14 o'clock");
ps.print("We must study very hard");
ps.close();
}
}
程序无输出,test3.txt的内容是:
14
This is about 14 o'clock
We must study very hard
字符打印流
PrintWriter是字符打印流,使用PrintWriter需要导包,import java.io.PrintWriter
PrintWriter(String fileName)使用指定的文件名创建一个流,不用自动进行刷新。
PrintWriter(Writer out,boolean autoFlush)创建一个新的流,out是字符输出流,autoFlush是一个布尔值,为真则println printf或format方法将刷新输出缓冲区。
import java.io.FileNotFoundException;
import java.io.PrintWriter;
public class output2 {
public static void main(String[] args) throws FileNotFoundException {
PrintWriter pw = new PrintWriter("test3.txt");
pw.write(49);
pw.write(53);
pw.write(10);
pw.println("This is already 15 o'clock");
pw.println("Continue!");
pw.close();
}
}
程序无输出,test3.txt的内容是:
15
This is already 15 o'clock
Continue!
复制文件
import java.io.*;
public class readwrite {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new FileReader("test3.txt"));
PrintWriter pw = new PrintWriter("test2.txt");
String s;
while((s = br.readLine()) != null){
pw.println(s);
}
br.close();
pw.close();
}
}
程序无输出,test2.txt的内容与test3.txt的内容一致,是:
15
This is already 15 o'clock
Continue!