//=================================================
1. IO流的概述
?IO流用來處理設(shè)備之間的數(shù)據(jù)傳輸.流按操作數(shù)據(jù)分為兩種:字節(jié)流與字符流
?字符流:用于專門處理字符文件數(shù)據(jù)(文本文件,記事本可以打開觀看到了)
? ? ?操作字符的,計(jì)算機(jī)的存儲(chǔ)中,兩個(gè)字節(jié),表示一個(gè)字符
? ? ?漢字兩個(gè)字節(jié)表示,因此使用字符流操作文本文件,方便簡(jiǎn)單
? ? ?這個(gè)字符流使用的時(shí)候,默認(rèn)的去查詢本機(jī)默認(rèn)編碼表 GBK
?字節(jié)流:每次做操作一個(gè)字節(jié),8個(gè)二進(jìn)制為
? 這個(gè)流對(duì)象,可以操作任意類型文件
? 計(jì)算機(jī)的遠(yuǎn)程操作過程中,用的都是字節(jié)流
? 不查詢編碼表
?IO流技術(shù),不能操作文件夾。?只能操作文件
?
//=================================================
2. IO流分類
? 按照流向分,輸出流Output,輸入流Input
? 向硬盤中寫一個(gè)文件,輸出流,文件數(shù)據(jù)目的
? 讀取硬盤中的一個(gè)文件,輸入流,文件數(shù)據(jù)源
? 按照操作文件類型分,字符流
-- 文本,字節(jié)流 -- 任意文件
? 字符流:
? ? 字符輸出流:抽象基類:Writer -- 方法,寫的方法 write
? ? 字符輸入流: 抽象基類:Reader -- 方法,讀的方法 read
? 字節(jié)流:
? ? 字節(jié)輸出流:抽象基類:OutputStream -- 方法,寫的方法 write
? ? 字節(jié)輸入流:抽象基類:InputStream -- 方法,讀的方法 read
//=================================================
3. 字符輸出流對(duì)象
? java.io.Wirter?類的方法,寫的方法,方法都是重載形式?
? 寫,字符數(shù)組,字符數(shù)組一部分,單個(gè)字符,寫字符串,字符串一部分
? 找到子類FileWriter 構(gòu)造方法
? FileWriter(String fileName) 傳遞一個(gè)文件名
? 字符流輸出數(shù)據(jù),寫文件,必須刷新,否則數(shù)據(jù)不會(huì)走到目的地
? 但是只要你執(zhí)行的刷新,數(shù)據(jù)必走向目的地
? close()方法,關(guān)閉流對(duì)象,關(guān)閉之前,刷新內(nèi)存中數(shù)據(jù)
/*
? FileWriter字符輸出流,寫一個(gè)文本文件
*/
import java.io.*;
class FileWriterDemo
{
?public static void main(String[] args) throws IOException
?{
? //創(chuàng)建FileWriter的對(duì)象,傳遞字符串的文件名
? /*
? ? ? ?構(gòu)造方法,拋出了IO異常
? ? 堆中創(chuàng)建一個(gè)對(duì)象
? ? 創(chuàng)建了一個(gè)文件,如果文件已經(jīng)存在,直接覆蓋
? ? IO流對(duì)象本身,沒有創(chuàng)建文件的功能,調(diào)用Windows中的功能創(chuàng)建的
? */
? FileWriter fw = new FileWriter("c:\demo.txt");
? //開始寫文件了,將abc寫到文件中,write
? fw.write("abc");//數(shù)據(jù)寫在了內(nèi)存中
?
? //volid flush()刷新該流的緩沖,將內(nèi)存中的數(shù)據(jù),刷到目的中去
? ? ? ? fw.flush();
? fw.write("哈哈");
? fw.flush();
? //使用完IO流后,釋放Windows資源,關(guān)閉流對(duì)象
? ? ? ? fw.close();
?}
}
//=============
/*
? FileWriter類的寫的其他方法
*/
import java.io.*;
class FileWriterDemo1
{
?public static void main(String[] args) throws IOException
?{
? FileWriter fw = new FileWriter("e:\other.txt");
? //寫一個(gè)字符數(shù)組
? char[] ch = {'你','我','哈'};
? fw.write(ch,0,ch.length);
? fw.flush();
? //寫一個(gè)單個(gè)的字符
? fw.write(65);
? fw.flush();
? fw.close();
?}
}
//=================================================
4. 字符輸入流對(duì)象
? java.io.Reader?類的方法,讀的方法,方法都是重載形式
? ?讀,讀取單個(gè)字符,讀取字符數(shù)組,讀取字符數(shù)組一部分
? ?找子類FileReader構(gòu)造方法FileReader(String
fileName) 傳遞字符串的文件名
? ?讀取的方法?int
read() 讀取單個(gè)字符,返回int值
? ?讀取一個(gè)字符,返回ASCII碼值,read()方法,執(zhí)行一次,自動(dòng)向后讀一個(gè)
???read()方法,讀取到文件結(jié)尾返回-1
? ? int read(char[] ch)讀取方法的時(shí)候,傳遞一個(gè)字符數(shù)組
? ? 字符數(shù)組,緩沖區(qū)
? ? 數(shù)組,read()讀取到的字符,裝在數(shù)組中
? ? int返回值,什么意思?讀取到的有效的字符個(gè)數(shù)
? ? 數(shù)組緩沖,讀取效率跟高,推薦使用數(shù)組緩沖讀取文本文件
/*
?* 使用字符輸入流FileReader讀取一個(gè)文件
?* 必須是文本文件
?*/
import java.io.*;
public class FileReaderDemo {
?public static void main(String[] args) throws IOException{
? long start = System.currentTimeMillis();
? //創(chuàng)建一個(gè)字符輸入流對(duì)象,傳遞文件名
? FileReader fr = new FileReader("e:\1.txt");
? //調(diào)用讀取的方法
? //使用循環(huán)讀取,read()結(jié)束返回-1,用-1作為循環(huán)條件進(jìn)行讀取了
? int len = 0 ;
? while( (len = fr.read())!=-1 ){
? ?System.out.print((char)len);
? }
?
? fr.close();
? long end = System.currentTimeMillis();
? System.out.println(end - start );
?}
}





