国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

黑馬程序員——java基礎---IO(input output)流字符流

2019-11-14 23:51:35
字體:
來源:轉載
供稿:網友
黑馬程序員——java基礎---IO(input output)流字符流

黑馬程序員——java基礎---IO(input output)流字符流

------Java培訓、Android培訓、iOS培訓、.Net培訓、期待與您交流! -------

io(input output)流特點:

1,io流用來處理數據之間的傳輸

2,java對數據的操作是通過流的方式;

3,java用于操作流的對象都在io包中;

4,流按操作數據分為兩種:字節流和字符流;

5,流按流向分為:輸入流和輸出流。

注意:流只能操作數據,而不能操作文件。

3、IO流的常用基類:

1)字節流的抽象基流:InputStream和OutputStream

2)字符流的抽象基流:Reader和Writer

注:此四個類派生出來的子類名稱都是以父類名作為子類名的后綴,以前綴為其功能;如InputStream子類FileInputStream;Reader子類FileReader

既然IO流是用于操作數據的,那么數據的最常見體現形式是:文件。

需求:在硬盤上,創建一個文件并寫入一些文字數據。

找到一個專門用于操作文件的Writer子類對象。FileWriter。后綴名是父類名,前綴名是該流對象的功能。

如下示例:

import java.io.*;class  FileWriterDemo{    public static void main(String[] args) throws IOException    {        //創建一個FileWriter對象。該對象一被初始化就必須要明確被操作的文件。        //而且該文件會被創建到指定目錄下。如果該目錄下已有同名文件,將被覆蓋。        //其實該步就是在明確數據要存放的目的地。        FileWriter fw = new FileWriter("demo.txt");        //調用write方法,將字符串寫入到流中。        fw.write("abcde");        //刷新流對象中的緩沖中的數據。        //將數據刷到目的地中。        //fw.flush();        //關閉流資源,但是關閉之前會刷新一次內部的緩沖中的數據。        //將數據刷到目的地中。        //和flush區別:flush刷新后,流可以繼續使用,close刷新后,會將流關閉。        fw.close();    }}

注意:

其實java自身不能寫入數據,而是調用系統內部方式完成數據的書寫,使用系統資源后,一定要關閉資源。

close()和flush()區別:

flush()刷新后,流可以繼續使用;

而close()刷新后,將會關閉流,不可再寫入字符流。

2,IO異常的處理方式

由于在創建對象時,需要指定創建文件位置,如果指定的位置不存在,就會發生IOException異常,所以在整個步驟中,需要對IO異常進行try處理。

/*IO異常的處理方式。*/import java.io.*;class  FileWriterDemo2{    public static void main(String[] args)     {        FileWriter fw = null;        try        {            fw = new FileWriter("demo.txt");            fw.write("abcdefg");        }        catch (IOException e)        {            System.out.

注意:

1、定義文件路徑時,可以用“/”或者“//”。

2、在創建一個文件時,如果目錄下有同名文件將被覆蓋。

3、在讀取文件時,必須保證該文件已存在,否則出異常。

4、在關閉流時,要判斷流是否為空;

對已有文件的數據續寫指定數據

文件的數據的續寫是通過構造函數 FileWriter(Strings,boolean append),在創建對象時,傳遞一個true參數,代表不覆蓋已有的文件。并在已有文件的末尾處進行數據續寫。(windows系統中的文件內換行用/r/n兩個轉義字符表示,在linux系統中只用/n表示換行),如下:

/*演示對已有文件的數據續寫。*/import java.io.*;class  FileWriterDemo3{    public static void main(String[] args)     {        FileWriter fw = null;        try        {//傳遞一個true參數,代表不覆蓋已有的文件。并在已有文件的末尾處進行數據續寫。            fw = new FileWriter("demo.txt",true);            fw.write("nihao/r/nxiexie");        }        catch (IOException e)        {            System.out.println("catch:"+e.toString());        }        finally        {            try            {                if(fw!=null)                    fw.close();                            }            catch (IOException e)            {                System.out.println(e.toString());            }        }            }}

文件流讀取

文件讀取有兩種方式:第一種方式是讀取單個字符,第二種方式是通過字符數組進行讀取。

1,一次讀取一個字符:

import java.io.*;class  FileReaderDemo{    public static void main(String[] args) throws IOException    {        //創建一個文件讀取流對象,和指定名稱的文件相關聯。        //要保證該文件是已經存在的,如果不存在,會發生異常FileNotFoundException        FileReader fr = new FileReader("demo.txt");        //調用讀取流對象的read方法。        //read():一次讀一個字符。而且會自動往下讀。                int ch = 0;        while((ch=fr.read())!=-1)        {            System.out.println(ch);        }        /*        while(true)        {            int ch = fr.read();            if(ch==-1)                break;            System.out.println("ch="+(char)ch);        }        */        //關閉流資源        fr.close();    }}

2,通過字符數組進行讀取

/*第二種方式:通過字符數組進行讀取。*/import java.io.*;class FileReaderDemo2 {    public static void main(String[] args)     {        FileReader fr = null;        Try{            fr = new FileReader("demo.txt");            //定義一個字符數組。用于存儲讀到字符。            //該read(char[])返回的是讀到字符個數。            char[] buf = new char[1024];            int num = 0;            while((num=fr.read(buf))!=-1)            {                System.out.println(new String(buf,0,num));            }        }catch(Exception e){            System.out.println(e);        }        finally{            if(fr != null){                try                {                    fr.close();                }                catch (IOException e)                {                }            }        }        }}
小練習:文本文件的拷貝,將C盤一個文本文件復制到D盤。
import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;/*復制的原理:其實就是將C盤下的文件數據存儲到D盤的一個文件中。步驟:1,在D盤創建一個文件。用于存儲C盤文件中的數據。2,定義讀取流和C盤文件關聯。3,通過不斷的讀寫完成數據存儲。4,關閉資源。*/public class CopyText {    public static void main(String[] args) {        // TODO Auto-generated method stub        copy_2();    }    //從C盤讀一個字符數組,才往D盤寫入    public static void copy_2()    {        FileWriter fw = null;        FileReader fr = null;        try        {            fw = new FileWriter("c://a.txt");            fr = new FileReader("d://b.txt");            char[] buf = new char[1024];            int len = 0;            while((len=fr.read(buf))!=-1)            {                fw.write(buf,0,len);            }        }        catch (IOException e)        {            throw new RuntimeException("讀寫失敗");        }        finally        {            if(fr!=null)                try                {                    fr.close();                }                catch (IOException e)                {                }            if(fw!=null)                try                {                    fw.close();                }                catch (IOException e)                {                }        }    }    //從C盤讀一個字符,就往D盤寫一個字符。    public static void copy_1()     {        //創建目的地。        FileWriter fw = null;        FileReader fr = null;        try {            fw = new FileWriter("c://a.txt");            //與已有文件關聯。            fr = new FileReader("d://b.java");                        int ch = 0;            while((ch=fr.read())!=-1)            {                fw.write(ch);            }        } catch (IOException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }finally{            if(fw != null){                try {                    fw.close();                } catch (IOException e) {                    // TODO Auto-generated catch block                    e.printStackTrace();                }            }            if(fr !=null){                try {                    fr.close();                } catch (IOException e) {                    // TODO Auto-generated catch block                    e.printStackTrace();                }            }        }    }}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 南川市| 临洮县| 巴南区| 南阳市| 德格县| 青阳县| 神农架林区| 无棣县| 昭苏县| 铜鼓县| 景东| 清河县| 监利县| 泰安市| 元朗区| 河池市| 东明县| 罗定市| 郁南县| 富阳市| 辽源市| 保亭| 阳东县| 五常市| 紫金县| 板桥市| 景泰县| 宁都县| 高要市| 子长县| 莎车县| 台南县| 越西县| 合川市| 锦州市| 于田县| 西畴县| 介休市| 磐石市| 鄂尔多斯市| 沙雅县|