1. 程式人生 > >IO流相關

IO流相關

tabs test spl img system sta 得到 作文件 封裝

IO流的常用方法:

1: 文件的讀取和寫入圖解:

技術分享圖片

2:字節流:

讀寫文件的方法:

一般效率讀取:

讀取文件: FileInputStream();

寫數據: FileOutputStream ();

緩沖區高效率讀取:

讀取文件: BufferedInputStream();

寫數據: BufferedOutputStram ();

字符流:
讀取數據:FileReader();
寫數據 : FileWriter();
緩沖區高效讀取:
讀取數據:BufferedReader();
讀取行 :readLine();
寫入數據:BufferedWriter();

使用:操作文本文檔一般使用字符流,操作其他文件一般使用字節流;

3: File類操作文件的常用方法:

3-1: 文件夾或文件的創建:

1  //獲取File對象
2         File file = new File("E:\\file");
3 //創建單個文件夾 4 boolean mkdir = file.mkdir(); 5 System.out.println(mkdir); 6 //創建多層級的文件夾的: 7 File file1 = new File("e:\\file\\demo1\\demo2\\demo3"); 8 boolean mkdirs = file1.mkdirs(); 9 System.out.println(mkdirs);
//創建文件:
           boolean newFile = file.createNewFile();

刪除文件或者文件夾:

2        File file = new File("test2.txt");
4         boolean delete = file.delete();
6         System.out.println(delete);

文件或文件夾的重命名:

        File file = new File("OnlyFileTest/test.txt");
//路徑相同為重命名,路徑不同為剪切並重命名: File file1
= new File("OnlyFileTest/Demo2.txt"); boolean demo2 = file.renameTo(file1); System.out.println(demo2);

File類的判斷功能:

          File file = new File("OnlyFileTest/test.txt");
       //判斷是否是文件夾:
boolean directory = file.isDirectory(); //判斷是否是文件: boolean file2 = file.isFile();
//判斷是否存在:
boolean exists = file.exists();

File類的獲取功能:

  File file = new File("OnlyFileTest/test.txt");
        //獲取文件的名字:
       String name = file.getName();
         //獲取文件的絕對路徑:
        String absolutePath = file.getAbsolutePath();
        //獲取文件的相對路徑:
        String path = file.getPath();
        //獲取文件的長度,字節數;
        long length = file.length();
        //獲取文件最後一次修改的毫秒值:
        long l = file.lastModified();

高級獲取功能:

 File file = new File("OnlyFileTest/test.txt");
        //獲取指定目錄下所有文件或者文件夾名稱的數組:
        String[] list = file.list();
        //獲取指定目錄下所有文件或則文件夾的File數組:
        File[] files = file.listFiles();

案例:輸出指定目錄下以 .jpg 結尾的所有文件:

方式一:

技術分享圖片
/*
 * 判斷E盤目錄下是否有後綴名為.jpg的文件,如果有,就輸出此文件名稱
 * 
 * 分析:
 *         A:封裝e判斷目錄
 *         B:獲取該目錄下所有文件或者文件夾的File數組
 *         C:遍歷該File數組,得到每一個File對象,然後判斷
 *         D:是否是文件
 *             是:繼續判斷是否以.jpg結尾
 *                 是:就輸出該文件名稱
 *                 否:不搭理它
 *             否:不搭理它
 */
public class FileDemo {
    public static void main(String[] args) {
        // 封裝e判斷目錄
        File file = new File("e:\\");

        // 獲取該目錄下所有文件或者文件夾的File數組
        File[] fileArray = file.listFiles();

        // 遍歷該File數組,得到每一個File對象,然後判斷
        for (File f : fileArray) {
            // 是否是文件
            if (f.isFile()) {
                // 繼續判斷是否以.jpg結尾
                if (f.getName().endsWith(".jpg")) {
                    // 就輸出該文件名稱
                    System.out.println(f.getName());
                }
            }
        }
    }
}
View Code

方式二:

技術分享圖片
/*
 * 判斷E盤目錄下是否有後綴名為.jpg的文件,如果有,就輸出此文件名稱
 * A:先獲取所有的,然後遍歷的時候,依次判斷,如果滿足條件就輸出。
 * B:獲取的時候就已經是滿足條件的了,然後輸出即可。
 * 
 * 要想實現這個效果,就必須學習一個接口:文件名稱過濾器
 * public String[] list(FilenameFilter filter)
 * public File[] listFiles(FilenameFilter filter)
 */
public class FileDemo2 {
    public static void main(String[] args) {
        // 封裝e判斷目錄
        File file = new File("e:\\");

        // 獲取該目錄下所有文件或者文件夾的String數組
        // public String[] list(FilenameFilter filter)
        String[] strArray = file.list(new FilenameFilter() {
            @Override
            public boolean accept(File dir, String name) {
                // return false;
                // return true;
                // 通過這個測試,我們就知道了,到底把這個文件或者文件夾的名稱加不加到數組中,取決於這裏的返回值是true還是false
                // 所以,這個的true或者false應該是我們通過某種判斷得到的
                // System.out.println(dir + "---" + name);
                // File file = new File(dir, name);
                // // System.out.println(file);
                // boolean flag = file.isFile();
                // boolean flag2 = name.endsWith(".jpg");
                // return flag && flag2;
                return new File(dir, name).isFile() && name.endsWith(".jpg");
            }
        });

        // 遍歷
        for (String s : strArray) {
            System.out.println(s);
        }
    }
}
View Code

案例二:

遞歸遍歷出所有以 .java 結尾的文件:

技術分享圖片
/*
 * 需求:請大家把E:\JavaSE目錄下所有的java結尾的文件的絕對路徑給輸出在控制臺。
 * 
 * 分析:
 *         A:封裝目錄
 *         B:獲取該目錄下所有的文件或者文件夾的File數組
 *         C:遍歷該File數組,得到每一個File對象
 *         D:判斷該File對象是否是文件夾
 *             是:回到B
 *             否:繼續判斷是否以.java結尾
 *                 是:就輸出該文件的絕對路徑
 *                 否:不搭理它
 */
public class FilePathDemo {
    public static void main(String[] args) {
        // 封裝目錄
        File srcFolder = new File("E:\\JavaSE");

        // 遞歸功能實現
        getAllJavaFilePaths(srcFolder);
    }

    private static void getAllJavaFilePaths(File srcFolder) {
        // 獲取該目錄下所有的文件或者文件夾的File數組
        File[] fileArray = srcFolder.listFiles();

        // 遍歷該File數組,得到每一個File對象
        for (File file : fileArray) {
            // 判斷該File對象是否是文件夾
            if (file.isDirectory()) {
                getAllJavaFilePaths(file);
            } else {
                // 繼續判斷是否以.java結尾
                if (file.getName().endsWith(".java")) {
                    // 就輸出該文件的絕對路徑
                    System.out.println(file.getAbsolutePath());
                }
            }
        }
    }
}
View Code

IO流相關