1. 程式人生 > >【轉載】Java IO基礎總結

【轉載】Java IO基礎總結

stream name lse rect block 文件操作 讀數 pla ex18

Java中使用IO(輸入輸出)來讀取和寫入,讀寫設備上的數據、硬盤文件、內存、鍵盤......,根據數據的走向可分為輸入流和輸出流,這個走向是以內存為基準的,即往內存中讀數據是輸入流,從內存中往外寫是輸出流。

根據處理的數據類型可分為字節流和字符流

1.字節流可以處理所有數據類型的數據,在java中以Stream結尾

2.字符流處理文本數據,在java中以Reader和Writer結尾。

我們來看個IO流的詳解圖:

技術分享圖片

IO流的本質是對字節和字符的處理,那麽我們平時也是用來處理文件的,就從文件處理開始接觸這方面的知識。

1.文件操作(創建文件和文件夾,查看文件)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 //創建一個文件路徑 File file = new File("D:\\testData.txt"); if(file.exists()){ //得到文件路徑 System.out.println(file.getAbsolutePath()); //得到文件大小 System.out.println("文件大小:"+file.length()); } //創建文件和創建文件夾
File file1 = new File("d:\\iotest.txt"); if(!file1.exists()) { try { file1.createNewFile(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }else{ System.out.println("文件已存在"); } //創建文件夾 File file2 = new File("d:\\testIO"); if(file2.isDirectory())
{ System.out.println("文件夾存在"); }else{ file2.mkdir(); } //列出一個文件夾下的所有文件 File f = new File("d:\\testIO"); if(f.isDirectory()) { File lists[] = f.listFiles(); for(int i=0;i<lists.length;i++) { System.out.println(lists[i].getName()); } }

常用字節流FileInputStream和FileOutputStream:

FileInputStream:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 FileInputStream fis = null; try { fis = new FileInputStream("D:\\testData.txt"); byte bytes[]=new byte[1024]; int n=0; while((n=fis.read(bytes))!= -1){ String str = new String(bytes,0,n); System.out.print(str); } } catch (Exception e) { e.printStackTrace(); } finally{ try { fis.close(); } catch (IOException e) { e.printStackTrace(); } }

 技術分享圖片

查看輸出:

技術分享圖片

FileOutputStream:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 FileOutputStream fos = null; try { fos = new FileOutputStream("D:\\testData.txt"); String str = "報效國家,舍生忘死"; byte bytes[] = str.getBytes(); fos.write(bytes); } catch (Exception e) { e.printStackTrace(); } finally { try { fos.close(); } catch (Exception e2) { e2.printStackTrace(); } }

查看一下:

技術分享圖片

如果是續寫文件,則可以加上參數:

技術分享圖片

字符流FileReader和FileWriter:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 //字符流 //文件寫出 輸入流 FileReader freader = null; //寫入到文件 輸出流 FileWriter fwriter = null; try { //創建輸入對象 freader = new FileReader("d:\\testData.txt"); //創建輸出對象 File f1 = new File("e:\\testData.txt"); if(!f1.exists()){ f1.createNewFile(); } fwriter = new FileWriter(f1); //讀入到內存 char chars[] = new char[1024]; int n=0; while((n=freader.read(chars))!= -1) { fwriter.write(chars); //System.out.println(chars); } } catch (Exception e) { e.printStackTrace(); // TODO: handle exception }finally{ try{ freader.close(); fwriter.close(); }catch(Exception e){ e.printStackTrace(); } } //緩沖字符流 bufferedReader bufferedWriter BufferedReader bfreader = null; try { FileReader freader = new FileReader("d:\\testData.txt"); bfreader = new BufferedReader(freader); //循環讀取 String s =""; while((s=bfreader.readLine())!= null) { System.out.println(s); } } catch (Exception e) { // TODO: handle exception }

  

【轉載】Java IO基礎總結