輸入輸出
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,就會發生異常。