Java File類文件管理及IO讀寫、復制操作

jopen 11年前發布 | 99K 次閱讀 Java Java開發

File類的總結:

1.文件和文件夾的創建

2.文件的讀取

3.文件的寫入

4.文件的復制(字符流、字節流、處理流)

5.以圖片地址下載圖片

文件和文件夾

相關函數

 (boolean) mkdir() 創建此抽象路徑名指定的目錄
 (boolean) mkdirs() 創建此抽象路徑名指定的目錄,包括所有必需但不存在的父目錄。
 (boolean) delete() 刪除此抽象路徑名表示的文件或目錄
 (boolean) createNewFile() 當不存在此路徑名指定名稱的文件時,創建一個新的空文件。
 

創建文件

    public static void NewFile(String pathString) {
        File file = new File(pathString);
        if (!file.exists()) {
            try {
                if (file.createNewFile()) {
                    System.out.println("文件創建成功");
                }
            } catch (Exception e) {
                // TODO: handle exception
                e.printStackTrace();
            }
        } else {
            System.out.println("文件已存在");
        }
    }

創建文件夾

    public static void NewFileBox(String pathString) {
        File file2 = new File(pathString);
        if (!file2.exists()) {
            if (file2.mkdirs()) {
                System.out.println("文件夾成功");
            }
        } else {
            System.out.println("文件夾存在");
            file2.delete();//銷毀文件
        }
    }

應用:

    public static void main(String[] args) {
        NewFile("test/file.txt");
        NewFileBox("test/a/a/a/a");
    }

Writer寫入文件

用FileWriter寫入文件

    public  static void ForFileWriter(String string,String fileName) {
        File file = new File(fileName);
        try {
            FileWriter fWriter = new FileWriter(file);
            fWriter.write(string);
            fWriter.close();
        } catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
        }
    }

用BufferedWriter寫入文件

    public static void ForBufferedWriter(String string,String desFile) {
        BufferedWriter bWriter = null;
        try {
            bWriter = new BufferedWriter(new FileWriter(new File(desFile)));
            bWriter.write(string.toString());
            bWriter.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

應用:

    public static void main(String[] args) {
        ForFileWriter("用FileWriter寫入文件", "test/writer1.txt");
        ForBufferedWriter("用BufferedWriter寫入文件", "test/writer2.txt");
    }

Reader讀取文件

用FileReader讀取文件

    public static void testReadByReader(String fileName){
        File file = new File(fileName);
        FileReader fis = null;
        try {
            fis =  new FileReader(file);
            char[] arr = new char[1024 * 1000 * 6];
            int len = fis.read(arr);
            String data = new String(arr, 0, len);
            fis.close();
            System.out.println(fileName+"中按FileReader讀取的文件內容是:\n"+data);
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

用FileInputStream讀取文件

    public static void testReadByInputStream(String fileName){
        File file = new File(fileName);
        FileInputStream fis = null;
        try {
            fis =  new FileInputStream(file);
            byte[] arr = new byte[1024 * 1000 * 6];
            int len = fis.read(arr);
            String data = new String(arr, 0, len);
            fis.close();
            System.out.println(fileName+"中按FileInputStream讀取的文件內容是:\n"+data);
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

用BufferedReader讀取文件

    public static void testReadByBufferedReader(String fileName) {
        BufferedReader bReader = null;
        String line = null;
        StringBuffer buffer = new StringBuffer();
        try {
            bReader =new BufferedReader(new FileReader(new File(fileName)));
            while ((line = bReader.readLine())!=null) {
                buffer.append(line).append("\n");
            }
        } catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
        }
        System.out.println(fileName+"中按BufferedReader讀取的文件內容是:\n"+buffer.toString());
    }

應用:
    public static void main(String[] args) {
        testReadByInputStream("res/我.txt");
        testReadByReader("res/我.txt");
        testReadByBufferedReader("res/我.txt");
    }

文件的復制操作

字符流復制

    public static void FileCopy1(String readfile,String writeFile) {
        try {
            FileReader input = new FileReader(readfile);
            FileWriter output = new FileWriter(writeFile);
            int read = input.read();        
            while ( read != -1 ) {
                output.write(read); 
                read = input.read();
            }           
            input.close();
            output.close();
        } catch (IOException e) {
            System.out.println(e);
        }
    }

字節流復制

    public static void FileCopy2(String readfile,String writeFile) {
        try {
            FileInputStream input = new FileInputStream(readfile);
            FileOutputStream output = new FileOutputStream(writeFile);
            int read = input.read();        
            while ( read != -1 ) {
                output.write(read); 
                read = input.read();
            }           
            input.close();
            output.close();
        } catch (IOException e) {
            System.out.println(e);
        }
    }

處理流復制

    public static void FileCopy3(String readfile,String writeFile) {
        BufferedReader bReader = null;
        BufferedWriter bWriter = null;
        String line = null; 
        try {
            bReader = new BufferedReader(new FileReader(new File(readfile)));
            bWriter = new BufferedWriter(new FileWriter(new File(writeFile)));
            while ((line = bReader.readLine())!=null) {
                bWriter.write(line);
                bWriter.newLine();
            }
            bWriter.close();
            bReader.close();
        } catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
        }
    }

應用:

    public static void main(String[] args) {
        FileCopy1("res/我.txt", "test/1.txt");
        FileCopy2("res/我.txt", "test/2.txt");
        FileCopy3("res/我.txt", "test/3.txt");
        FileCopy2("res/me.jpg", "test/33.jpg");
    }
 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!