JAVA核心技術I---JAVA基礎知識(文本文件讀寫)

一:java IO包概述

(一)Java讀寫文件,只能以(數據)流的形式進行讀寫

(二)java IO 包

–節點類:直接對文件進行讀寫
–包裝類
• 轉化類:字節/字符/數據類型的轉化類
• 裝飾類:裝飾節點類

(三)節點類

–InputStream, OutputStream(字節)
  • FileInputStream,FileOutputStream
–Reader,Writer(字符)
  • FileReader, FileWriter

(四)轉換類:字符到字節之間的轉化

–InputStreamReader:文件讀取時字節,轉化爲Java能理解的字符
–OutputStreamWriter:Java將字符轉化爲字節輸入到文件中

(五)裝飾類:裝飾節點類

–DataInputStream,DataOutputStream: 封裝數據流
–BufferedInputStream,BufferOutputStream:緩存字節流
–BufferedReade, BufferedWriter:緩存字符流

二:文本文件讀寫

–輸出文本字符到文件中
–從文件中讀取文本字符串

(一)寫文件

–先建立文件,寫入數據,關閉文件
–FileOutputStream, OutputStreamWriter, BufferedWriter
–BufferWriter
  • write
  • newLine
–try-resource 語句,自動關閉資源
–關閉最外層的數據流,將會把其上全部的數據流關閉
    public static void writeFile1() {
        FileOutputStream fos = null;
        OutputStreamWriter osw = null;
        BufferedWriter bw = null;
        try {
            fos = new FileOutputStream("c:/temp/abc.txt"); // 節點類
            osw = new OutputStreamWriter(fos, "UTF-8"); // 轉化類
            //osw = new OutputStreamWriter(fos); // 轉化類
            bw = new BufferedWriter(osw); // 裝飾類
            // br = new BufferedWriter(new OutputStreamWriter(new
            // FileOutputStream("c:/temp/abc.txt")))
            bw.write("咱們是");
            bw.newLine();
            bw.write("Ecnuers.^^");
            bw.newLine();
        } catch (Exception ex) {
            ex.printStackTrace();
        } finally {
            try {
                bw.close(); // 關閉最後一個類,會將全部的底層流都關閉
            } catch (Exception ex) {
                ex.printStackTrace();
            }
        }
    }
    public static void writeFile2() {
        //try-resource 語句,自動關閉資源
        try (BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("c:/temp/abc.txt")))) {
            bw.write("咱們是");
            bw.newLine();
            bw.write("Ecnuers.^^");
            bw.newLine();
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

(二)讀文件

–先打開文件,逐行讀入數據,關閉文件
–FileInputStream, InputStreamWriter, BufferedReade
–BufferReader
  • readLine
–try-resource 語句,自動關閉資源
–關閉最外層的數據流,將會把其上全部的數據流關閉
    public static void readFile1() {
        FileInputStream fis = null;
        InputStreamReader isr = null;
        BufferedReader br = null;
        try {
            fis = new FileInputStream("c:/temp/abc.txt"); // 節點類
            isr = new InputStreamReader(fis, "UTF-8"); // 轉化類
            //isr = new InputStreamReader(fis);
            br = new BufferedReader(isr); // 裝飾類
            // br = new BufferedReader(new InputStreamReader(new
            // FileInputStream("c:/temp/abc.txt")))
            String line;
            while ((line = br.readLine()) != null) // 每次讀取一行
            {
                System.out.println(line);
            }
        } catch (Exception ex) {
            ex.printStackTrace();
        } finally {
            try {
                br.close(); // 關閉最後一個類,會將全部的底層流都關閉
            } catch (Exception ex) {
                ex.printStackTrace();
            }
        }
    }
    public static void readFile2() {
        String line;
        //try-resource 語句,自動關閉資源
        try (BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream("c:/temp/abc.txt")))) {
            while ((line = in.readLine()) != null) {
                System.out.println(line);
            }
        }
        catch(Exception ex)
        {
            ex.printStackTrace();
        }
    }

(三)混用寫入和讀取

public class FileW {
    public static void main(String[] args) {
        //寫文件
        FileOutputStream fos = null;        //節點類
        OutputStreamWriter osw = null;        //轉換類
        BufferedWriter bw=null;                //裝飾類
        
        try {
            fos = new FileOutputStream("D:\\MyJava\\Code\\JH16\\test\\aa\\bb\\E.txt");
            osw = new OutputStreamWriter(fos);
            bw = new BufferedWriter(osw);
            
            //開始寫入
            bw.write("咱們是:");
            bw.newLine();
            bw.write("fwawa!");
            bw.newLine();
        }catch(Exception e) {
            System.err.println(e.getMessage());
        }finally{
            try {
                bw.close();
            }catch(Exception e) {
                System.err.println(e.getMessage());
            }
        }
        
        //讀取文件
        String line;
        try(BufferedReader in = 
                new BufferedReader(
                        new InputStreamReader(
                                new FileInputStream("D:\\MyJava\\Code\\JH16\\test\\aa\\bb\\E.txt")))){
            while((line=in.readLine())!=null) {
                System.out.println(line);
            }
        }catch(Exception e) {
            System.err.println(e.getMessage());
        }
    }
}
咱們是:
fwawa!
相關文章
相關標籤/搜索