输入输出
1、读取输入
- 构建一个 Scanner 对象,并与”标准输入流“ System.in 关联:
Scanner scan = new Scanner(System.in);
//构建一个 Scanner 对象,并与”标准输入流“ System.in 关联
- 因为输入是可见的,所以 Scanner 类不适用于控制台读取密码,可以使用 Console 类,但每次只能读取一行,而且在 IDE 上无法使用:
Console cons = System.console();
String username = cons.readLine("User name: ");
char[] passwd = cons.readPassword("Password: ");
2、格式化输出
- 一种方法是 Java 沿用了 C 语言的 printf 方法!
System.out.printf("%,.2f", 10000 / 3.0);//输出3,333.33
- 另一种方法可以用 String.format 方法创建一个不输出的格式化字符串。
String name = "boy";
int age = 10;
String message = String.format("Hello,%s.Next year,you'll be %d \n", name, age);
System.out.printf(message);
// 输出Hello,boy.Next year,you'll be 10
- 打印当前时间和日期
System.out.printf("%tc", new Date());
// 输出 星期六 八月 13 16:52:09 CST 2016
3、文件输入与输出
文件的输入和输出都需要一个专门的对象来做这件事
- 对文件进行读取,使用一个File对象来构造一个 Scanner 对象:
try {
Scanner scan = new Scanner(Paths.get("/home/Desktop/myfile.txt"));
// 如果是win系统,使用双反斜杠
} catch (IOException e) {
e.printStackTrace();
}
- Scanner 可以带字符串参数,但会被解释为数据:
Scanner scan = new Scanner("/home/Desktop/myfile.txt");
// 这个scanner会将参数作为'h'、'o'、'm'、'e'等字符
- 写入文件需要构造一个 PrintWriter 对象:
PrintWriter out = new PrintWriter("/home/Desktop/myfile2.txt");
//在构造器中只需要提供文件名,没有的话会新建,如果之前已存在会覆盖,最好先检查一下,防止丢失数据
- 使用绝对路径可以避免一些麻烦
- 如果用一个不存在的文件构造一个Scanner,或者用一个不能被创建的文件名来构造一个PrintWriter,就会发生异常。