Java学习–输入输出
输出
输出比较简单,用System.out.println,System.out.print。
System.out.printf格式化输出:
System.out.printf("%8.2f",x);
//8个字符宽度,两位小数
System.out.printf("Hello, %s, Next year, you'll be %d", name, age);
//f浮点数,s字符串,d十进制整数,x十六进制,o八进制,e指数浮点数,c字符
//t日期,后面跟不同字母输出不同内容
System.out.printf("%1$s %2$tB %2$te, %2$tY", "Due date:", new Date());
//1代表第一个参数(参数索引),$表示结束
//从1开始,避免与0混淆(前面补0)
输入
读取“标准输入流”System.in首先需要构造一个与“标准输入流”System.in关联的Scanner对象。
Scanner类定义在java.util包中,需要使用:
import java.util.*;
Scanner in = new Scanner(System.in);
System.out.print("What is your name? ");
String name = in.nextLin();
//读取一行
String firstName = in.next();
//读取一个单词,以空格为分隔
System.out.print("How old are you? ");
int age = in.nextInt();
//读取一个整数
double tmp = in.nextDouble();
//读取一个双精度浮点数
Scanner类是屏幕可见的,如果涉及到密码输入,应该使用Console类(Console类对应控制台中的输入输出,在IDE中会报错):
//Console类必须每次读取一行,不如Scanner方便
Console cons = System.console();
String username = cons.readLine("User name: ");
char[] passwd = cons.readPassword("Password: ");
/*
安全起见,返回的密码放到字符数组中,而不是字符串中,在处理完成后,
应当用其他值填充覆盖数组元素。
*/
文件输入输出
文件输入
文件输入需要构造一个Scanner对象。
Scanner in = new Scanner(Path.of("myfile.txt"), StandardCharset.UTF_8);
String myPath = "c:\\mydirectory\\myfile.txt";
如果:
Scanner in = new Scanner("myfile.txt");
//Scanner会将参数看成包含10个字符的字符串
之后in对象可以用Scanner的各种方法对文件进行读取。
文件输出
文件输出需要构造一个PrintWriter对象,提供文件名和编码。
PrintWriter out = new PrintWriter("myfile.txt", StandardCharset.UTF_8);
之后out对象可以像使用System.out使用print等方法。
重定向
java MyProg < myfile.txt > output.txt