java IO流之System.in & System.out 控制台输出保存至文件
System
类包含一些有用的类字段和方法。它不能被实例化。
字段摘要
- static PrintStream err
“标准”错误输出流。- static InputStream in
“标准”输入流。默认情况下 从键盘输入- static PrintStream out
“标准”输出流。默认情况下,输出到控制台。
System.in
得到的是标准的输入流:–>从键盘输入:
InputStream in = System.in;
int n = in.read();//调用read方法等待键盘的录入,返回第一个字符的编码值
System.out.println(n);
从键盘录入一个int类型的数据:
Scanner sc = new Scanner(System.in);
int i = sc.nextInt();
System.out.println(i);
-
键盘录入实际上是System.in起作用,这跟管怼到键盘上去了,从键盘录入的内容从这个管进到程序中
-
Scanner的作用:扫描器:起扫描作用的,扫键盘的从这根管出来的数据
- Scanner扫描文件
Scanner sc = new Scanner(new FileInputStream(new File("test.txt"))); while(sc.hasNext()){ System.out.println(sc.next()); }
System.out
“标准”输出流。此流已打开并准备接受输出数据。通常,此流对应于显示器输出或者由主机环境或用户指定的另一个输出目标。 对于简单独立的 Java 应用程序,编写一行输出数据的典型方式是: System.out.println(data)
返回的输出流 、 打印流(PrintStream)
//写到控制台:
PrintStream out = System.out;
//调用方法:
out.print("hello");//直接在控制台写出,但是不换行
out.println("world");//直接在控制台写出,并且换行操作
System.out.println("hello");
System.out.print("world");
保存System.in内容
分布实现
-
准备输入方向:
//键盘录入: InputStream in = System.in;//属于字节流 //字节流--》字符流: InputStreamReader isr = new InputStreamReader(in); //在isr外面再套一个缓冲流: BufferedReader br = new BufferedReader(isr);
-
准备输出方向
//准备目标文件 File f = new File("IOStream/src/testfile/demo.txt"); FileWriter fw = new FileWriter(f); BufferedWriter bw = new BufferedWriter(fw);
-
内容转存
String s = br.readLine(); while(!s.equals("exit")){ bw.write(s); bw.newLine();//文件中换行 s = br.readLine(); }
-
关闭流
bw.close(); br.close();
完整程序
try-catch-finally
public class IntoFile {
public static void main(String[] args) {
BufferedReader br = null;
BufferedWriter bw = null;
try {
//1.先准备输入方向:
//键盘录入:
InputStream in = System.in;//属于字节流
//字节流--》字符流:
InputStreamReader isr = new InputStreamReader(in);
//在isr外面再套一个缓冲流:
br = new BufferedReader(isr);
//2.准备输出方向:
//准备目标文件
File f = new File("IOStream/src/testfile/demo.txt");
FileWriter fw = new FileWriter(f);
bw = new BufferedWriter(fw);
//3.开始动作:
String s = br.readLine();
while (!s.equals("exit")) {
bw.write(s);
bw.newLine();//文件中换行
s = br.readLine();
}
} catch (IOException e) {
e.printStackTrace();
} finally {
//4.关闭流:
try {
if (bw != null) {
bw.close();
}
} catch (IOException e) {
e.printStackTrace();
}
try {
if (br != null) {
br.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
try-with-resouce
public class IntoFile {
public static void main(String[] args){
File f = new File("IOStream/src/testfile/test.txt");
try(
//1.先准备输入方向:
//键盘录入:
InputStream in = System.in;//属于字节流
//字节流--》字符流:
InputStreamReader isr = new InputStreamReader(in);
//在isr外面再套一个缓冲流:
BufferedReader br = new BufferedReader(isr);
//2.准备输出方向:
//准备目标文件
FileWriter fw = new FileWriter(f);
BufferedWriter bw = new BufferedWriter(fw);
){
//3.开始动作:
String s = br.readLine();
while(!s.equals("exit")){
bw.write(s);
bw.newLine();//文件中换行
s = br.readLine();
}
}catch(Exception e){
e.printStackTrace();
}
}
}