摘要:錯誤信息不在控制臺顯示,而是在文件中輸入重定向類后提供的輸入數據類,此類位于包中,不僅可以完成輸入數據的操作,還可以方便地對輸入數據進行驗證。
Java知識點總結(JavaIO- System類對IO的支持與Scanner類 )
@(Java知識點總結)[Java, JavaIO]
[toc]
System類public class Demo09 { public static void test1() { try { System.out.write("hello".getBytes()); } catch (IOException e) { e.printStackTrace(); } ; } public static void test2() { try { System.out.write(Integer.parseInt("hello")); } catch (Exception e) { System.err.println(e); } ; } // 輸入的是英文沒有問題,輸入的是中文則會出現亂碼,這是因為數據是一個字節一個字節讀取進來的,漢字是2個字節 // 解決方法是將全部輸入的數據放到緩沖區,然后一次性從內存中讀取出來,這樣數據只讀一次,不會亂碼 public static void test3() throws IOException { System.out.println("請輸入內容:" ); InputStream in = System.in; int temp = 0; StringBuffer sb = new StringBuffer(); while ((temp = in.read()) != -1) { char c = (char) temp; if (c == " ") { break; } sb.append(c); } in.close(); System.out.println("輸入的內容是:" + sb.toString()); } // 輸出重定向。錯誤信息不在控制臺顯示,而是在err.log文件中 public static void test4() throws FileNotFoundException { try { System.out.write(Integer.parseInt("hello")); } catch (Exception e) { System. setOut(new PrintStream(new File("E:" + File.separator + "err.log"))); System.out.println(e); } ; } // 輸入重定向 public static void test5() throws Exception { System. setIn(new FileInputStream(new File("E:" + File.separator + "err.log"))); InputStream in = System.in; byte[] b = new byte[1024]; int len = in.read(b); System.out.println(new String (b,0,len)); } public static void main(String[] args) { /* * test1(); test2(); */ /* * try { test3(); } catch (IOException e) { e.printStackTrace(); } */ /*try { test4(); } catch (FileNotFoundException e) { e.printStackTrace(); }*/ try { test5(); } catch (Exception e) { e.printStackTrace(); } } }Sanner類
JDK 1.5后提供的輸入數據類,此類位于java.util 包中,不僅可以完成輸入數據的操作,還可以方便地對輸入數據進行驗證。
public class Demo11 { public static void add() { int i = getInt(); float j = getFloat(); System.out.printf("%d+%1.2f=%1.2f", i, j, i + j); } //從文件中讀取數據 public static void getDataFromFile(){ File f = new File("E:"+File.separator+"test.txt"); StringBuffer sb = new StringBuffer(); try { Scanner sc = new Scanner(f); sc.useDelimiter(" ");// (設置讀取的分隔符)空格處理 while(sc.hasNext()){ //讀取下一行 sb.append(sc.next()+" "); } } catch (FileNotFoundException e) { e.printStackTrace(); } System.out.println(sb.toString()); } // 整數的輸入 public static Integer getInt() { Scanner sc = new Scanner(System.in); System.out.println("請輸入整數:" ); if (sc.hasNextInt()) { return sc.nextInt(); } else { System.out.println("輸入的不是整數,請重新輸入:" ); return getInt(); } } // 小數的輸入 public static Float getFloat() { Scanner sc = new Scanner(System.in); System.out.println("請輸入一個小數:" ); if (sc.hasNextFloat()) { return sc.nextFloat(); } else { System.out.println("輸入的不是小數,請重新輸入:" ); return getFloat(); } } //日期輸入 public static Date getDate() { Scanner sc = new Scanner(System.in); String str = ""; System.out.println("請輸入一個日期(yyyy-MM-dd):" ); if (sc.hasNext("^d{4}-d{2}-d{2}$")) { str = sc.next(); try { return new SimpleDateFormat("yyyy-MM-dd").parse(str); } catch (ParseException e) { e.printStackTrace(); return null; } } else { System.out.println("您輸入的不是日期,請重新輸入!" ); return getDate(); } } public static void main(String[] args) { /* * Scanner sc = new Scanner(System.in); System.out.println("輸入數據:"); * sc.useDelimiter(" "); String str = sc.next(); * System.out.println("輸入的數據為:" + str); */ //add(); //System.out.println(getDate()); getDataFromFile(); /*?西瓜、 蘋果、 香蕉 橘子 。。。*/ } }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/69194.html
摘要:知識點總結類知識點總結后提供的輸入數據類,此類位于包中,不僅可以完成輸入數據的操作,還可以方便地對輸入數據進行驗證。 Java知識點總結(JavaIO- Scanner類 ) @(Java知識點總結)[Java, JavaIO] showImg(https://segmentfault.com/img/bV9dAj?w=838&h=396); JDK 1.5后提供的輸入數據類,此類位于...
摘要:我們在前面已經提到的幾種流就有它們的使用情境和和主要用于解決不限于純文本的二進制文件的輸入輸出情境。同時,如果使用帶有緩沖區的緩沖輸入輸出流的話會使得讀寫的效率更高,有助于更快地完成不限于純文本的二進制文件的讀寫。 不同情境的流: 流的種類很多,針對不同的IO數據交換情景我們可以選擇不同的流來完成任務。 我們在前面已經提到的幾種流就有它們的使用情境: 1. FileInputStrea...
摘要:知識點總結字節流知識點總結字節流在程序中所有的數據都是以流的方式進行傳輸或保存的,程序需要數據時要使用輸入流讀取數據,而當程序需要將一些數據保存起來時,就要使用輸出流。字節流主要操作類型數據,以數組為準,主要操作類是類和類。 Java知識點總結(JavaIO-字節流) @(Java知識點總結)[Java, JavaIO] [toc] 字節流 在程序中所有的數據都是以流的方式進行傳輸或保...
摘要:知識點總結類知識點總結類類可以進行創建和刪除文件等操作。使用一個類,則必須向類的構造方法中傳遞一個文件路徑。 Java知識點總結(JavaIO-File類) @(Java知識點總結)[Java, JavaIO] [toc] File類 File類可以進行創建和刪除文件等操作。使用一個File類,則必須向File類的構造方法中傳遞一個文件路徑。 showImg(https://segme...
摘要:使用字節流寫入文件,如果沒有關閉字節流操作,文件依然存在內容,說明字節流是操作文件本身的。字節流比字符流更好,使用更廣泛。 Java知識點總結(JavaIO-字符流) @(Java知識點總結)[Java, JavaIO] [toc] 在程序中一個字符等于兩個字節,那么 Java 提供了 Reader 和 Writer 兩個專門操作字符流的類。 字符輸出流:Writer 類定義如下: p...
閱讀 6866·2021-09-22 15:36
閱讀 5687·2021-09-02 10:20
閱讀 1869·2019-08-30 15:44
閱讀 2653·2019-08-29 14:06
閱讀 1155·2019-08-29 11:17
閱讀 1586·2019-08-26 14:05
閱讀 3093·2019-08-26 13:50
閱讀 1551·2019-08-26 10:26