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

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

JAVA基礎學習day19--IO流一、FileWrite與FileReader

2019-11-14 15:32:26
字體:
來源:轉載
供稿:網友

一、IO簡述

1.1、簡述

IO:input/output

IO流用來處理設備之間的數據傳輸

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

Java用于操作流的對象都在IO包中。

1.2、結構

字節流抽象類:

InputStream,OutputStream

字符流抽象類:

Reader、Writer。

ps:由這四4個派生出來子類名稱都是以父類名作為子類名的后綴

如:InputStream的子類FileInputStream

如:Reader的子類FileReader;

1.3、分類

按操作數據方式為兩種:字節流與字符流

按流向分:輸入流,輸出流

 

二、Writer

2.1、writer

寫入字符流的抽象類。子類必須實現的方法僅有 write(char[], int, int)、flush() 和 close()。但是,多數子類將重寫此處定義的一些方法,以提供更高的效率和/或其他功能。

字段摘要
PRotected Objectlock
用于同步針對此流的操作的對象。

構造方法摘要
protected Writer()
創建一個新的字符流 writer,其關鍵部分將同步 writer 自身。
protected Writer(Object lock)
創建一個新的字符流 writer,其關鍵部分將同步給定的對象。

方法摘要
Writerappend(char c)
將指定字符添加到此 writer。
Writerappend(CharSequence csq)
將指定字符序列添加到此 writer。
Writerappend(CharSequence csq, int start, int end)
將指定字符序列的子序列添加到此 writer.Appendable
abstract voidclose()
關閉此流,但要先刷新它。
abstract voidflush()
刷新該流的緩沖。
voidwrite(char[] cbuf)
寫入字符數組。
abstract voidwrite(char[] cbuf, int off, int len)
寫入字符數組的某一部分。
voidwrite(int c)
寫入單個字符。
voidwrite(String str)
寫入字符串。
voidwrite(String str, int off, int len)
寫入字符串的某一部分。

 

三、FileWriter與FileReader

3.1、FileWriter

構造方法摘要
FileWriter(File file)
根據給定的 File 對象構造一個 FileWriter 對象。
FileWriter(File file, boolean append)
根據給定的 File 對象構造一個 FileWriter 對象。
FileWriter(FileDescriptor fd)
構造與某個文件描述符相關聯的 FileWriter 對象。
FileWriter(String fileName)
根據給定的文件名構造一個 FileWriter 對象。
FileWriter(String fileName, boolean append)
根據給定的文件名以及指示是否附加寫入數據的 boolean 值來構造 FileWriter 對象。

 

 

package com.pb.io.demo1;import java.io.File;import java.io.FileWriter;import java.io.IOException;import java.util.Scanner;/* * close:關閉流,會將流關閉,不能再使用 * flush:flush刷新后,流可以繼續使用, */public class WriterDemo {    public static void main(String[] args) {        Scanner input=new Scanner(System.in);        File file=null; //文件        FileWriter fw=null; //字符輸出流        try {            file=new File("d:/demo.txt");            // fw=new FileWriter(file);//如果有這個文件就會覆蓋              //如果要追加到文件內容后面就使用true             fw=new FileWriter(file,true);             System.out.println("請輸入內容,請輸入 over后結束");             String str=null; //接收輸入的內容             char [] buf=new char[1024];//定義緩沖區大小             do{                  str=input.nextLine();                  buf=str.toCharArray();//轉換為字符數組                  fw.write(buf); //將字符數組寫入                  fw.flush();//刷新流             }while(!str.equals("over"));        } catch (IOException e) {            e.printStackTrace();        }finally{            //使用finally關閉流            try {                if(fw!=null)                fw.close();            } catch (IOException e) {                e.printStackTrace();            }        }         System.out.println("寫入結束");    }    }

 

 

 

 

3.2、FileReader

構造方法摘要
FileReader(File file)
在給定從中讀取數據的 File 的情況下創建一個新 FileReader
FileReader(FileDescriptor fd)
在給定從中讀取數據的 FileDescriptor 的情況下創建一個新 FileReader
FileReader(String fileName)
在給定從中讀取數據的文件名的情況下創建一個新 FileReader

 

3.3示例 單個字符讀取

 

package com.pb.io.demo1;import java.io.File;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.IOException;/* * 單個字符讀取 */public class FileReaderDemo {    public static void main(String[] args) {        File file=null; //文件        FileReader fr=null; //字符輸入流            try {            file=new File("d:/demo.txt");            fr=new FileReader(file);            int  len=0;//接收讀出內容                        while((len=fr.read())!=-1){                System.out.println((char)len);            }        } catch (FileNotFoundException e) {            e.printStackTrace();        } catch (IOException e) {            e.printStackTrace();        }finally{            try {                //關閉流                if(fr!=null)                fr.close();            } catch (IOException e) {                e.printStackTrace();            }        }    }}

 

 

 

3.4、示例 數組方式讀取 建議使用

 

package com.pb.io.demo1;import java.io.File;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.IOException;import java.util.Arrays;/* * 通過字符數組 讀取 */public class FileReaderDemo {    public static void main(String[] args) {        File file=null; //文件        FileReader fr=null; //字符輸入流            try {            file=new File("d:/demo.txt");            fr=new FileReader(file);            //接收讀出內容數組            char [] buf=new char [1024]; //一般為1024的整數倍            int len=0;            while((len=fr.read(buf))!=-1){ //讀取內容到字符數組                System.out.println(new String(buf,0,len));//讀有多少,就輸出多少                            }        } catch (FileNotFoundException e) {            e.printStackTrace();        } catch (IOException e) {            e.printStackTrace();        }finally{            try {                //關閉流                if(fr!=null)                fr.close();            } catch (IOException e) {                e.printStackTrace();            }        }    }}

 

 

 

四、完整和復制文件

4.1、字符輸入流和字符輸入流

 

package com.pb.io.demo1;import java.io.File;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import java.util.Scanner;public class FileWriterAndFileReader {    public static void main(String[] args) {        File file = new File("d://demo.txt");        Output(file);        input(file);    }    // 寫入文件    private static void Output(File file) {        FileWriter fw = null;        Scanner input = new Scanner(System.in);        try {            fw = new FileWriter(file, true);            // 聲明變量來接收用戶輸入            System.out.println("請輸入要寫入的內容:輸入over結束");            String str = null;            // 聲明緩沖區            char[] buf = new char[1024];            do {                str = input.nextLine(); // 接收用戶輸入                buf = str.toCharArray(); // 轉換為數組                fw.write(buf, 0, buf.length);// 寫入            } while (!(str.equals("over")));        } catch (IOException e) {            e.printStackTrace();        } finally {            if (fw != null) {                try {                    fw.close();                } catch (IOException e) {                    e.printStackTrace();                }            }        }    }    // 讀寫文件    private static void input(File file) {        FileReader fr = null;        try {            fr = new FileReader(file);            // 定義字符數組            char[] buf = new char[1024];// 緩沖區大小            int len = 0;// 長度讀取的字符個數            while ((len = fr.read(buf)) != -1) {                System.out.println(new String(buf, 0, len));            }        } catch (FileNotFoundException e) {            e.printStackTrace();        } catch (IOException e) {            e.printStackTrace();        } finally {            if (fr != null) {                try {                    fr.close();                } catch (IOException e) {                    e.printStackTrace();                }            }        }    }}

 

 

 

4.2、復制文件

 

package com.pb.io.demo1;import java.io.File;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;/** * 復制的原理 將一個文件存儲到另一個文件中 邊讀邊寫 先讀再寫 * */public class CopyFileDemo {    public static void main(String[] args) {        File soure = new File("d://demo.txt");        File objFile = new File("e://q.txt");        copy1(soure, objFile);        copy2(soure, objFile);    }    /*     * 讀一個復制一個     */    public static void copy1(File soure, File objFile) {        FileReader fr = null;        FileWriter fw = null;        try {            // 聲明讀,寫流對象            fr = new FileReader(soure);            fw = new FileWriter(objFile,true);            int ch = 0;            int count=0;            // 開始讀            while ((ch = fr.read()) != -1) {                count++;                System.out.println("正在讀取"+count+"行");                fw.write(ch);                fw.write("/r/n"); //換行                System.out.println("正在寫入"+count+"行");            }            System.out.println("讀寫完成");        } catch (FileNotFoundException e) {            e.printStackTrace();        } catch (IOException e) {            e.printStackTrace();        } finally {            try {                if (fw != null)                    fw.close();            } catch (IOException e) {                e.printStackTrace();            }            try {                if (fr != null)                    fr.close();            } catch (IOException e) {                e.printStackTrace();            }        }    }    /*     * 數組方式讀取復制     */    public static void copy2(File soure, File objFile) {        FileReader fr = null;        FileWriter fw = null;        try {            // 聲明讀,寫流對象            fr = new FileReader(soure);            fw = new FileWriter(objFile,true);            int ch = 0;            int count=0;            char [] buf=new char[1024];            // 開始讀            while ((ch = fr.read(buf)) != -1) {                count++;                System.out.println("正在讀取"+count+"行");                fw.write(buf,0,ch);                fw.write("/r/n"); //換行                System.out.println("正在寫入"+count+"行");            }            System.out.println("讀寫完成");        } catch (FileNotFoundException e) {            e.printStackTrace();        } catch (IOException e) {            e.printStackTrace();        } finally {            try {                if (fw != null)                    fw.close();            } catch (IOException e) {                e.printStackTrace();            }            try {                if (fr != null)                    fr.close();            } catch (IOException e) {                e.printStackTrace();            }        }    }}

 

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 兰溪市| 阿巴嘎旗| 军事| 榆中县| 泗阳县| 九龙县| 三原县| SHOW| 舟山市| 常德市| 五家渠市| 平度市| 新源县| 江源县| 道真| 固安县| 红桥区| 西乡县| 晋中市| 马龙县| 萍乡市| 化隆| 桃源县| 馆陶县| 建瓯市| 道孚县| 五指山市| 平利县| 若尔盖县| 杂多县| 高碑店市| 沂源县| 敖汉旗| 腾冲县| 连城县| 海淀区| 隆化县| 广南县| 柞水县| 卓尼县| 洞头县|