Java學習筆記之IO流

IO : input ouput 流 相對於java(內存)java

File: 文件,是JAVA中的對象,用來映射硬盤中的文件或者目錄算法

注意:java中‘\’是轉義字符,因此‘\\’才能表示目錄數組

File經常使用方法:測試

 1         File file=new File("D:\\File\\a");  2         System.out.println("此抽象路徑名錶示的文件是否可執行---->"+file.canExecute());  3         System.out.println("此抽象路徑名錶示的文件是否可讀---->"+file.canRead());  4         System.out.println("此抽象路徑名錶示的文件是否可寫---->"+file.canWrite());  5         System.out.println("此抽象路徑名錶示的文件是否存在---->"+file.exists());  6         System.out.println("此抽象路徑名錶示的文件是不是一個目錄---->"+file.isDirectory());  7         System.out.println("此抽象路徑名錶示的文件是不是一個文件---->"+file.isFile());  8         System.out.println("此抽象路徑名錶示的文件是不是一個隱藏文件---->"+file.isHidden());  9         System.out.println("getName-->"+file.getName());// 獲取文件的名字
10         System.out.println("getName-->"+file.getPath());// 獲取文件的路徑

 

獲取目錄下全部文件並遍歷:spa

 

 1         //放進一個字符串數組
 2                 String [] a=file.list();  3         for (String s : a) {  4  System.out.println(s);  5  }  6         
 7         //放進一個File數組
 8         File [] b=file.listFiles();  9         for (File f : b) { 10  System.out.println(f); 11         }

 

 

列出目錄下的全部子文件(遞歸算法)code

 

 1 public static void showAllFiles(File file){  2         //用一個文件數組存放目錄中的文件
 3         File [] files=file.listFiles();  4         //遍歷
 5         for (File f : files) {  6             //文件爲空,終止程序
 7             if(f==null){  8                 return;  9  } 10             //文件爲目錄形式,遞歸調用自己
11             if(f.isDirectory()){ 12  showAllFiles(f); 13             //是文件就打印路徑名和文件名
14             }else{ 15                 if(f.getName().endsWith(".exe") || f.getName().endsWith(".tmp")){ 16                     System.out.println(f.getPath() + f.getName()); 17  } 18  } 19  } 20  } 21         //測試 22 // File file1=new File("D:\\"); 23 // showAllFiles(file1);

 

 

 

字節流:對象

 

 1 /**
 2  * 字節流傳輸數據  3  * @param copyFile 輸入目標文件  4  * @param targetFile 輸出目標文件  5      */
 6     public static void inputAndOutput(File copyFile,File targetFile){  7         
 8         //定義輸入流
 9         FileInputStream  fis=null; 10         //定義輸出流
11         FileOutputStream  fos=null; 12         try { 13             //建立輸入流對象
14             fis=new FileInputStream(copyFile); 15             //建立輸出流對象
16             fos=new FileOutputStream(targetFile); 17             
18             //定義byte數組存放字節流(自定義大小)
19             byte [] b=new byte[1024]; 20             //返回一次流對象傳輸的字節大小
21             @SuppressWarnings("unused") 22             int i=0; 23             //當爲空時會返回-1,以此終止流的傳輸
24             while((i=fis.read(b))>0){ 25  fos.write(b); 26  } 27             
28         } catch (IOException e) { 29  e.printStackTrace(); 30         } finally{ 31             //最後釋放流對象
32             try { 33                 if(fis!=null){ 34  fis.close(); 35  } 36                 if(fos!=null){ 37  fos.close(); 38  } 39                 
40             } catch (IOException e) { 41  e.printStackTrace(); 42  } 43  } 44         
45  } 46         //字節流傳輸數據測試 47 // File copyFile =new File("D:\\File\\a\\b\\Integer.png"); 48 // File targetFile=new File("D:\\File\\a\\Integer.png"); 49 // inputAndOutput(copyFile,targetFile);

 

 

字符流blog

字符流輸入:遞歸

 

 1 /**
 2  * 讀取文件內容到控制檯  3  * @param file  4      */
 5     public static void input(File file) {  6         //字符流對象
 7         FileReader fr = null;  8         //包裝字符流對象
 9         BufferedReader br = null; 10         try { 11             fr = new FileReader(file); 12             br = new BufferedReader(fr); 13             String s=null; 14             do { 15                 //按行讀取
16                 s=br.readLine(); 17                 if(s!=null){ 18  System.out.println(s); 19  } 20             } while (s!=null); 21             
22         } catch (IOException e) { 23  e.printStackTrace(); 24         } finally { 25             //關閉流,先外後內
26             try { 27                 if (br != null) { 28  br.close(); 29  } 30                 if (fr != null) { 31  fr.close(); 32  } 33             } catch (IOException e) { 34  e.printStackTrace(); 35  } 36  } 37 
38     }

 

字符流輸出:內存

 1 //字符流輸出
 2     public static void Output(File file){  3         FileWriter fw=null;  4         BufferedWriter bw =null;  5         try {  6             fw=new FileWriter(file,true);//true 表示在文件中追加,false表示覆蓋
 7             bw= new BufferedWriter(fw);  8             bw.write("你好呀");  9             bw.newLine();//換行
10             bw.write("世界"); 11  bw.flush(); 12         } catch (IOException e) { 13  e.printStackTrace(); 14         } finally { 15             //關閉流,先外後內
16             try { 17                 if (bw != null) { 18  bw.close(); 19  } 20                 if (fw != null) { 21  fw.close(); 22  } 23             } catch (IOException e) { 24  e.printStackTrace(); 25  } 26  } 27     
28     }

測試:

 

1 public static void main(String[] args) { 2         File file = new File("D:\\File\\a\\a.txt"); 3         // 4  input(file); 5  Output(file); 6 
7     }
相關文章
相關標籤/搜索