Java進階——java基礎(三):IO流

一、流的概念和作用

流是一組有順序的,有起點和終點的字節集合,是對數據傳輸的總稱或抽象。即數據在兩設備間的傳輸稱爲流,流的本質是數據傳輸,根據數據傳輸特性將流抽象爲各種類,方便更直觀的進行數據操作。

二、Java流體系結構圖

https://img-blog.csdnimg.cn/20181220103640923

三、Java流體系中常用

https://img-blog.csdnimg.cn/20181220103640945

四、Java IO流的分類

根據處理數據類型的不同分爲:字符流和字節流

根據數據流向不同分爲:輸入流和輸出流

五、Java IO流部分對象實例

//Java IO流測試
IOgutter iogutter = new IOgutter();
//System.out.println(iogutter.GetPath());
//iogutter.CreateDir();//創建目錄
//iogutter.ReadDir();//讀取目錄
//iogutter.Delete_DirFile();//刪除文件夾和文件
iogutter.Writetxt();//寫入文件測試
iogutter.Readtxt();//讀取文件測試
        
        



import java.io.*;
import java.text.SimpleDateFormat;
import java.util.Date;

public class IOgutter {
    /**
     * 獲取應用程序運行目錄
     *
     * @return
     */
    public String GetPath() {
        return Main.class.getResource("").getPath();
    }

    /**
     * 創建目錄
     * File類有兩個方法創建文件夾
     * ------| mkdir():創建一個文件夾,成功返回true、失敗返回false
     * 失敗表明對象指定的路徑已經存在,或者由於該路徑不存在,指定文件夾不能被創建
     * ------| mkdirs():創建一個文件夾和它的所有父文件夾
     */
    public void CreateDir() {
        String dirname = "/G:/IntelliJIDEA.Worksapce/001/Dir_Test/dir_test";
        File dir = new File(dirname);
        dir.mkdirs();

        //創建下面實例用於刪除的文件夾以及文件
        File dir1 = new File(dirname + "/delete_test");
        dir1.mkdir();
        CreateTxtFile(dirname);//創建文件
    }

    /**
     * 創建文件
     *
     * @param dirname
     */
    private void CreateTxtFile(String dirname) {
        File dir2 = new File(dirname + "/delete_test.txt");
        try {
            if (!dir2.exists())
                dir2.createNewFile();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    /**
     * 讀取目錄
     */
    public void ReadDir() {
        String dirname = "/G:/IntelliJIDEA.Worksapce/001/Dir_Test";
        File dir = new File(dirname);
        if (dir.isDirectory()) {
            System.out.println("目錄:" + dirname);
            String file[] = dir.list();
            for (int i = 0; i < file.length; i++) {
                File f = new File(dirname + "/" + file[i]);
                if (f.isDirectory())
                    System.out.println(file[i] + "是目錄");
                else
                    System.out.println(file[i] + "是文件");
            }
        } else
            System.out.println("不是目錄");
    }

    /**
     * 刪除文件夾和文件
     * 注意點:刪除某一文件夾時必須保證該文件之下沒有其他文件才能正確刪除
     */
    public void Delete_DirFile() {
        File folder = new File("/G:/IntelliJIDEA.Worksapce/001/Dir_Test/dir_test");
        deleteFolder(folder);//刪除文件以及目錄
    }

    /**
     * 刪除文件以及目錄
     *
     * @param folder
     */
    private void deleteFolder(File folder) {
        File[] files = folder.listFiles();
        if (files != null) {
            for (File f : files) {
                if (f.isDirectory())
                    deleteFolder(f);
                else
                    f.delete();
            }
        }
        folder.delete();
    }

    /**
     * 寫入文件測試
     */
    public void Writetxt() {
        File writename = new File("/G:/IntelliJIDEA.Worksapce/001/Dir_Test/dir_test/dir_test.txt");
        try {
            writename.createNewFile();//創建文件
            BufferedWriter out = new BufferedWriter(new FileWriter(writename));
            SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//設置日期格式
            String Messasge = "";
            for (int i = 0; i < 3; i++) {
                Messasge += df.format(new Date()) + "dir_test00" + i+"\r\n";
            }
            out.write(Messasge);
            out.flush();
            out.close();
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

    /**
     * 讀取文件測試
     */
    public void Readtxt() {
        File readname = new File("/G:/IntelliJIDEA.Worksapce/001/Dir_Test/dir_test/dir_test.txt");
        try {
            FileInputStream fileInputStream = new FileInputStream(readname);
            InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream, "UTF-8");
            BufferedReader bufferedReader = new BufferedReader(inputStreamReader);

            StringBuffer sb = new StringBuffer();
            String text = null;
            while((text = bufferedReader.readLine()) != null){
                sb.append(text+"\r\n");
            }
            System.out.println(sb.toString());
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章