java的IO流

java中的File的使用

java中File的基礎(chǔ)使用

文件的幾個(gè)常用方法
創(chuàng)建文件句柄。
File是java.io里邊的類。
如下代碼是創(chuàng)建文件的方法:

//獲取文件的句柄
        File file=new File("f:\\java\\code\\file\\1.txt");
        //如果是非后綴文件也是可以的
        File file2=new File("f:\\java\\code\\file\\2");
        
        try {
            //創(chuàng)建文件
            file.createNewFile();
            file2.createNewFile();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        //file.isDirectory()  and  file.isFile() 是用來判斷是文件還是目錄的。
        System.out.println(file.isFile());
        System.out.println("Is file2 file:"+file2.isFile());

目錄的創(chuàng)建

    File file0=new File("f:\\java\\code\\file\0.txt");
        File file1=new File("f:\\java\\code\\file");
        //file1.exists();判斷目錄是否存在,如果存在才創(chuàng)建目錄
        System.out.println(file0.exists());
        System.out.println(file1.exists());
        
        //目錄的創(chuàng)建
        File mk1=new File(file1,"dir");
        //如果目錄不存在則創(chuàng)建目錄
        if(!mk1.exists()) {
            mk1.mkdir();
            //如果創(chuàng)建多級(jí)目錄則是mk1.mkdirs();
        }

輸入流FileInputStream

輸入流的使用和實(shí)例,如下代碼:

try {
            FileInputStream fis=new FileInputStream("f:\\java\\code\\file\\1.txt");
            //fis.read()每次只能讀取一個(gè)字節(jié),如果沒有字節(jié)讀取了,則返回-1
            int n=0;
            while((n=fis.read())!=-1) {
                //讀取出來是一個(gè)ascii碼,需要轉(zhuǎn)成字符
                System.out.print((char)n);
            }
            fis.close();//關(guān)閉輸入流
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }catch(IOException e) {
            e.printStackTrace();
        }

FileInputStream讀取到的字節(jié)放入到字節(jié)數(shù)組中,然后轉(zhuǎn)換成字符,如下:

//讀取的字節(jié)放入到容器中
        try {
            FileInputStream fis=new FileInputStream("f:\\java\\code\\file\\1.txt");
            //創(chuàng)建一個(gè)字節(jié)的容器
            byte[] b=new byte[100];
            //讀取到的字節(jié)放入到這個(gè)容器里邊
            fis.read(b);
            //把字節(jié)容器的內(nèi)容轉(zhuǎn)換成字符
            System.out.println(new String(b));
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch(IOException e) {
            e.printStackTrace();
        }   

輸出流FileOutputStream

使用如下:

FileOutputStream fot;
        //如果第二個(gè)參數(shù)為true是追加,否則是覆蓋的寫入方式
        try {
            fot =new FileOutputStream("f:\\java\\code\\file\\1.txt",true);
            fot.write('a');//只能增加一個(gè)字符
            fot.close();
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }  catch(IOException e) {
            e.printStackTrace();
        }
        

java IO拷貝圖片

如下代碼:

try {
            //讀取文件
            FileInputStream fis=new FileInputStream("f:\\java\\code\\file\\timg.jpg");
            //讀取的文件寫入成新的文件
            FileOutputStream fos=new FileOutputStream("f:\\java\\code\\file\\timg2.jpg");
            //每次讀取多少
            byte [] b=new byte[1024];
            //循環(huán)讀取
            int n=0;
            while((n=fis.read(b))!=-1) {
                //把讀取到的內(nèi)容寫入到輸出流里邊,如果參數(shù)是0到n表示的是每次讀取個(gè)數(shù)0到n的位置而不是整個(gè)b數(shù)組
                //每次讀取都是byte的大小,如果最后一次讀取少于byte數(shù)組大小也以這個(gè)大小讀取,所以設(shè)置了第2個(gè)參數(shù)和第三個(gè)參數(shù)
                fos.write(b,0,n);
            }
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch(IOException e) {
            e.printStackTrace();
        }
        

java的緩沖流

BufferInputStream
BufferOutputStream

實(shí)例代碼如下:

FileInputStream fis;
        FileOutputStream fos;
        try {
            fis = new FileInputStream("f:\\java\\code\\file\\1.txt");
            fos =new FileOutputStream("f:\\java\\code\\file\\2.txt");
            //緩沖輸入流,里邊是放輸入流的
            BufferedInputStream bis=new BufferedInputStream(fis);
            //緩沖輸出流放里邊放輸出流作為參數(shù)
            BufferedOutputStream bos=new BufferedOutputStream(fos);
            //輸出流讀取的內(nèi)容是在緩沖里邊,如果緩沖沒有滿,則不會(huì)寫入到文件,如果寫入到文件,需要強(qiáng)制清除緩沖如:flush或者close
            bos.write('a');
            bos.flush();//清除緩沖流把內(nèi)容寫入到文件。
            System.out.print((char)bis.read());//讀取的結(jié)果是h
            
            bos.close();//關(guān)閉流,也會(huì)有寫入文件的強(qiáng)制作用
            fos.close();
            fis.close();
            bis.close();
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch(IOException e) {
            e.printStackTrace();
        }

字符字節(jié)轉(zhuǎn)換流

InputStreamReader
OutputStreamWriter

如下代碼使用:

/**
         * 字符字節(jié)轉(zhuǎn)換流的使用其實(shí)和緩沖流是比較類似的,就是從之前的字節(jié)容器存儲(chǔ)變成了字節(jié)容器存儲(chǔ)
         */
        FileInputStream fis;
        FileOutputStream fos;
        try {
            fis = new FileInputStream("f:\\java\\code\\file\\1.txt");
            fos=new FileOutputStream("f:\\java\\code\\file\\3.txt");
            InputStreamReader isr=new InputStreamReader(fis);
            OutputStreamWriter osr=new OutputStreamWriter(fos);
            int n=0;
            char[] cbuf=new char[10];
            while((n=isr.read(cbuf))!=-1) {
                System.out.print(cbuf);//可以直接輸出,因?yàn)槭亲止?jié)轉(zhuǎn)換了字符
                //把讀取到內(nèi)容寫入到文件里邊
                osr.write(cbuf);
                osr.flush();//強(qiáng)制輸入到文件里邊。
            }
            //關(guān)閉流的操作就省略了
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch(IOException e) {
            e.printStackTrace();
        }
        

java中IO對(duì)象化和反對(duì)象化

ObjectInputStream 參數(shù)是輸入流 fis
ObjectOutputStream 參數(shù)是輸出流 ois
ois.writeObject(對(duì)象) 寫入對(duì)象到某個(gè)文件里邊
oos.readObject();//讀取后的結(jié)果強(qiáng)制轉(zhuǎn)化為對(duì)象。

最后編輯于
?著作權(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),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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