摘要:錯誤信息不在控制臺顯示,而是在文件中輸入重定向類后提供的輸入數(shù)據(jù)類,此類位于包中,不僅可以完成輸入數(shù)據(jù)的操作,還可以方便地對輸入數(shù)據(jù)進行驗證。
Java知識點總結(jié)(JavaIO- System類對IO的支持與Scanner類 )
@(Java知識點總結(jié))[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); } ; } // 輸入的是英文沒有問題,輸入的是中文則會出現(xiàn)亂碼,這是因為數(shù)據(jù)是一個字節(jié)一個字節(jié)讀取進來的,漢字是2個字節(jié) // 解決方法是將全部輸入的數(shù)據(jù)放到緩沖區(qū),然后一次性從內(nèi)存中讀取出來,這樣數(shù)據(jù)只讀一次,不會亂碼 public static void test3() throws IOException { System.out.println("請輸入內(nèi)容:" ); 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("輸入的內(nèi)容是:" + 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后提供的輸入數(shù)據(jù)類,此類位于java.util 包中,不僅可以完成輸入數(shù)據(jù)的操作,還可以方便地對輸入數(shù)據(jù)進行驗證。
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); } //從文件中讀取數(shù)據(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()); } // 整數(shù)的輸入 public static Integer getInt() { Scanner sc = new Scanner(System.in); System.out.println("請輸入整數(shù):" ); if (sc.hasNextInt()) { return sc.nextInt(); } else { System.out.println("輸入的不是整數(shù),請重新輸入:" ); return getInt(); } } // 小數(shù)的輸入 public static Float getFloat() { Scanner sc = new Scanner(System.in); System.out.println("請輸入一個小數(shù):" ); if (sc.hasNextFloat()) { return sc.nextFloat(); } else { System.out.println("輸入的不是小數(shù),請重新輸入:" ); 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("輸入數(shù)據(jù):"); * sc.useDelimiter(" "); String str = sc.next(); * System.out.println("輸入的數(shù)據(jù)為:" + str); */ //add(); //System.out.println(getDate()); getDataFromFile(); /*?西瓜、 蘋果、 香蕉 橘子 。。。*/ } }
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/69194.html
摘要:知識點總結(jié)類知識點總結(jié)后提供的輸入數(shù)據(jù)類,此類位于包中,不僅可以完成輸入數(shù)據(jù)的操作,還可以方便地對輸入數(shù)據(jù)進行驗證。 Java知識點總結(jié)(JavaIO- Scanner類 ) @(Java知識點總結(jié))[Java, JavaIO] showImg(https://segmentfault.com/img/bV9dAj?w=838&h=396); JDK 1.5后提供的輸入數(shù)據(jù)類,此類位于...
摘要:我們在前面已經(jīng)提到的幾種流就有它們的使用情境和和主要用于解決不限于純文本的二進制文件的輸入輸出情境。同時,如果使用帶有緩沖區(qū)的緩沖輸入輸出流的話會使得讀寫的效率更高,有助于更快地完成不限于純文本的二進制文件的讀寫。 不同情境的流: 流的種類很多,針對不同的IO數(shù)據(jù)交換情景我們可以選擇不同的流來完成任務。 我們在前面已經(jīng)提到的幾種流就有它們的使用情境: 1. FileInputStrea...
摘要:知識點總結(jié)字節(jié)流知識點總結(jié)字節(jié)流在程序中所有的數(shù)據(jù)都是以流的方式進行傳輸或保存的,程序需要數(shù)據(jù)時要使用輸入流讀取數(shù)據(jù),而當程序需要將一些數(shù)據(jù)保存起來時,就要使用輸出流。字節(jié)流主要操作類型數(shù)據(jù),以數(shù)組為準,主要操作類是類和類。 Java知識點總結(jié)(JavaIO-字節(jié)流) @(Java知識點總結(jié))[Java, JavaIO] [toc] 字節(jié)流 在程序中所有的數(shù)據(jù)都是以流的方式進行傳輸或保...
摘要:知識點總結(jié)類知識點總結(jié)類類可以進行創(chuàng)建和刪除文件等操作。使用一個類,則必須向類的構(gòu)造方法中傳遞一個文件路徑。 Java知識點總結(jié)(JavaIO-File類) @(Java知識點總結(jié))[Java, JavaIO] [toc] File類 File類可以進行創(chuàng)建和刪除文件等操作。使用一個File類,則必須向File類的構(gòu)造方法中傳遞一個文件路徑。 showImg(https://segme...
摘要:使用字節(jié)流寫入文件,如果沒有關閉字節(jié)流操作,文件依然存在內(nèi)容,說明字節(jié)流是操作文件本身的。字節(jié)流比字符流更好,使用更廣泛。 Java知識點總結(jié)(JavaIO-字符流) @(Java知識點總結(jié))[Java, JavaIO] [toc] 在程序中一個字符等于兩個字節(jié),那么 Java 提供了 Reader 和 Writer 兩個專門操作字符流的類。 字符輸出流:Writer 類定義如下: p...
閱讀 7063·2021-09-22 15:36
閱讀 5819·2021-09-02 10:20
閱讀 1902·2019-08-30 15:44
閱讀 2682·2019-08-29 14:06
閱讀 1183·2019-08-29 11:17
閱讀 1639·2019-08-26 14:05
閱讀 3161·2019-08-26 13:50
閱讀 1583·2019-08-26 10:26