Java_文件操作

1.知識(shí)點(diǎn):
  • 字節(jié)流:FileInputStream類(讀取文件內(nèi)容)FileOutputStream類(輸出文件內(nèi)容)
  • BufferedInputStream(讀取文件)BufferedOutputStream(輸出文件)
  • ObjectInputStream(讀入文本里存的對(duì)象) ObjectOutputStream(對(duì)象寫入文本)
  • FileReader(讀取文件內(nèi)容) FileWriter (寫入文件)
  • BufferedReader(讀取內(nèi)容文件)BufferedWriter(寫入文件)
2.知識(shí)點(diǎn)的運(yùn)用:

1.I/O對(duì)象:不屬于內(nèi)存對(duì)象,創(chuàng)建后需要自己關(guān)閉。
2.創(chuàng)建文件:

        //創(chuàng)建文件完整路徑
        String path = "文件目錄";
        //拼接目錄
        File file = new File(path.concat("\\1.txt"));

        //判斷文件是否存在
        if (file.exists() == false){
           try {
               file.createNewFile();
               //異常處理
           }catch (IOException e){
               System.out.println("IO異常了");
           }
        }

3.創(chuàng)建目錄:
mkdirs()可以建立多級(jí)文件夾, mkdir()只會(huì)建立一級(jí)的文件夾, 如下:

new File("/tmp/one/two/three").mkdirs();
//執(zhí)行后, 會(huì)建立tmp/one/two/three四級(jí)目錄
new File("/tmp/one/two/three").mkdir();
//則不會(huì)建立任何目錄, 因?yàn)檎也坏?tmp/one/two目錄, 結(jié)果返回false
// throws IOException :拋出異常
public void createDirectory() throws IOException {
        File f = new File("文件目錄");
        f.mkdir();
    }

4.字節(jié)流與字符流的區(qū)別:

  • 字節(jié)流能對(duì)文件里面所有的數(shù)據(jù)類型進(jìn)行操作。
  • 字符流是操所文本數(shù)據(jù)的,只能操作文本數(shù)據(jù)。

5.字節(jié)流:

  • FileInputStream類(讀取文件類容):該方法是一個(gè)一個(gè)字節(jié)地讀取數(shù)據(jù),效率很慢
//例1:
FileInputStream fs = new FileInputStream("文件路徑");
byte[ ] name = new byte[12];
int count = fs.read(name);
fs.close();
  //例2:
FileInputStream fs = new FileInputStream("文件路徑");
long len = 0;
while((len = fs.read()) != -1) {
    char c = (char) len;
    System.out.print(c);
}
fs.close();
  • FileOutputStream類(寫入文件)
    public void class() throws IOException {
        FileOutputStream fos = new FileOutputStream("文件路徑");
        fos.write("123".getBytes());
        byte[ ] text = {'1','2','3'};
        fos.write(text);
        fos.close();
    }
  • BufferedInputStream(讀取文件)
        FileInputStream fis = new FileInputStream("文件路徑");
        BufferedInputStream bis = new BufferedInputStream(fis);
        byte[] b = new byte[1024];
        while(bis.read(b) != -1) {
            System.out.println(new String(b));
        }
        bis.close();
        fis.close();
  • BufferedOutputStream(寫入文件)
    public void class() throws IOException {
        FileOutputStream fos = new FileOutputStream("文件路徑");
        BufferedOutputStream bop = new BufferedOutputStream(fos);
        bop.write("123".getBytes());
        byte[ ] in = new byte[1024];
        while(bop.write(in) != -1){
               bop.write(in,0,bop.write(in));
        }
        bop.close();
        fos.close();
    }
  • 帶Buffered和不帶Buffered的區(qū)別
    帶Buffered的是緩沖字節(jié)輸入流或者是緩沖字節(jié)輸出流,它的效率比不帶Buffered的效率快很多。
    6.序列化:
    將對(duì)象轉(zhuǎn)換成字節(jié)。
    想要將對(duì)象寫入文本,該對(duì)象必須實(shí)現(xiàn)Serializable接口,該接口為空接口,叫做標(biāo)志性接口。
  • 對(duì)象寫入文本
public class MyClass {
    public static void main(String[] args) throws IOException {
        FileOutputStream fos = new FileOutputStream("文件路徑");
        ObjectOutputStream oos = new ObjectOutputStream(fos);
        person m = new person ();
        m.name = "小王";
        m.age = 20;
        oos.writeObject(m);
        oos.close();
        fos.close();  
    }
}

public class person implements Serializable {
    public String  name;
    public int age;
}
  • 讀入文本里存的對(duì)象(沿用上一個(gè)person類)
        FileInputStream fos = new FileInputStream("文件路徑");
        ObjectInputStream oos = new ObjectInputStream(fos);
        person m = new person ();
        m = (person) oos.readObject();
        System.out.println(m);
        oos.close();
        fos.close();

7.字符流:

  • FileReader(讀取文件內(nèi)容)
        FileReader fr = new FileReader("文件路徑");
        int len = 0;
                //一個(gè)字符一個(gè)字符的讀
        while((len = fr.read()) != -1) {
            System.out.print((char)len);
        }
        fr.close();
image.png
  • FileWriter (寫入文件)
    public void class() throws Exception {
        FileWriter fw = new FileWriter("文件路徑");
        fw.write("abc");
        fw.close();
    }
image.png
  • BufferedReader(讀取內(nèi)容文件):
    public void class() throws Exception {
        FileReader fw = new FileReader("文件路徑");
        BufferedReader br = new BufferedReader(fw);
        String str = null;
        while((str = br.readLine())!= null){
            System.out.println(str);
        }
        br.close();
        fw.close();
    }
  • BufferedWriter(寫入文件)
FileWriter fw = new FileWriter("文件路徑");
BufferedWriter bw = new BufferedWriter(fw);
bw.write("java開發(fā)");
bw.close();
fw.close();
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 五、IO流 1、IO流概述 (1)用來處理設(shè)備(硬盤,控制臺(tái),內(nèi)存)間的數(shù)據(jù)。(2)java中對(duì)數(shù)據(jù)的操作都是通過...
    佘大將軍閱讀 584評(píng)論 0 0
  • 一、基礎(chǔ)知識(shí):1、JVM、JRE和JDK的區(qū)別:JVM(Java Virtual Machine):java虛擬機(jī)...
    殺小賊閱讀 2,553評(píng)論 0 4
  • Java中是通過流的方式對(duì)數(shù)據(jù)進(jìn)行操作,用于操作流的類都在IO包中,IO流用來處理設(shè)備之間的數(shù)據(jù)傳輸。IO流按照流...
    阿Q說代碼閱讀 1,623評(píng)論 0 1
  • [TOC] IO流 IO流概述及其分類 IO概念 IO流用來處理設(shè)備之間的數(shù)據(jù)傳輸,Java對(duì)數(shù)據(jù)的操作是通過流的...
    wh_閱讀 7,341評(píng)論 0 22
  • 中午閑暇聽著鋼琴曲看著堂吉訶德,故事啼笑皆非冗雜著鋼琴聲讓我昏昏沉沉有了些許困意,便枕著鋼琴曲睡去了。 接下來是夢(mèng)...
    空時(shí)Elvy閱讀 480評(píng)論 3 0

友情鏈接更多精彩內(nèi)容