日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > php教程 > #java讀書筆記#IO流2

#java讀書筆記#IO流2

來源:程序員人生   發布時間:2016-06-08 13:03:04 閱讀次數:2457次
5、字符流經常使用基類的子類
寫入流:
(1)FileWriter:
構造方法:
FileWriter(String fileName) 
根據給定的文件名構造1個 FileWriter 對象。 
FileWriter(String fileName, boolean append) 
根據給定的文件名和唆使是不是附加寫入數據的 boolean 值來構造 FileWriter 對象。 
FileWriter(File file) 
根據給定的 File 對象構造1個 FileWriter 對象。 
FileWriter(File file, boolean append) 
根據給定的 File 對象構造1個 FileWriter 對象。 
FileWriter(FileDescriptor fd) 

構造與某個文件描寫符相干聯的 FileWriter 對象。


方法摘要:跟Writer1樣abstract  void close() 關閉此流,但要先刷新它。abstract  void flush() 刷新該流的緩沖。void write(int c) 寫入單個字符。void write(char[] cbuf) 寫入字符數組。          abstract  void write(char[] cbuf, int off, int len) 寫入字符數組的某1部份。 void write(String str) 寫入字符串。 

void write(String str, int off, int len) 寫入字符串的某1部份。 


(2)BufferedWriter:

構造方法:BufferedWriter(Writer out) 創建1個使用默許大小輸出緩沖區的緩沖字符輸出流。 BufferedWriter(Writer out, int sz) 

創建1個使用給定大小輸出緩沖區的新緩沖字符輸出流。 


方法摘要:void close() 關閉此流,但要先刷新它。 void flush() 刷新該流的緩沖。 void newLine() 寫入1個行分隔符。 void write(char[] cbuf, int off, int len) 寫入字符數組的某1部份。 void write(int c) 寫入單個字符。 void write(String s, int off, int len) 

寫入字符串的某1部份。 


(3)OutputStreamWriter:字節通向字符的轉換流

構造方法:

OutputStreamWriter(OutputStream out) 創建使用默許字符編碼的 OutputStreamWriter。

方法摘要:

void write(char[] cbuf, int off, int len) 寫入字符數組的某1部份。 

void write(int c) 寫入單個字符。

 void write(String str, int off, int len) 

寫入字符串的某1部份。


(4)PrintWriter:

構造方法:

PrintWriter(String fileName) 創建具有指定文件名稱且不帶自動行刷新的新 PrintWriter。

PrintWriter(File file) 使用指定文件創建不具有自動行刷新的新 PrintWriter。

PrintWriter(Writer out) 創建不帶自動行刷新的新 PrintWriter。 

PrintWriter(Writer out, boolean autoFlush) 創建新 PrintWriter。 

PrintWriter(OutputStream out) 根據現有的 OutputStream 創建不帶自動行刷新PrintWriter。

 PrintWriter(OutputStream out, boolean autoFlush) 通過現有的 OutputStream 創建新的 PrintWriter。


方法摘要:

PrintWriter append(char c) 將指定字符添加到此 writer。 

void print(各種類型的數據:) 打印各種類型的數據 

void println(各種類型的數據:):自動換行打印各種類型的數據

void write(char[] buf) 寫入字符數組。

 void write(char[] buf, int off, int len) 寫入字符數組的某1部份。 

void write(int c) 寫入單個字符。 void write(String s) 寫入字符串。 

void write(String s, int off, int len) 寫入字符串的某1部份。 


讀取流:

(1)FileReader:

構造方法:

FileReader(String fileName) 在給定從中讀取數據的文件名的情況下創建1個新 FileReader。

FileReader(File file) 在給定從中讀取數據的 File 的情況下創建1個新 FileReader。 

FileReader(FileDescriptor fd) 在給定從中讀取數據的 FileDescriptor 的情況下創建1個新 FileReader。

 

方法摘要:

和Reader基類方法1致:

abstract  void close() 關閉該流并釋放與之關聯的所有資源。

int read() 讀取單個字符。

int read(char[] cbuf)  將字符讀入數組

abstract  int read(char[] cbuf, int off, int len) 將字符讀入數組的某1部份。

long skip(long n)  跳過字符。

 

(2)BufferedReader:

構造方法:

BufferedReader(Reader in) 創建1個使用默許大小輸入緩沖區的緩沖字符輸入流。


方法摘要:

int read() 讀取單個字符。 

int read(char[] cbuf, int off, int len) 將字符讀入數組的某1部份。 

String readLine() 讀取1個文本行。

 

(3)InputStreamReader:字符通向字節的橋梁:

構造方法:

InputStreamReader(InputStream in) 創建1個使用默許字符集的 InputStreamReader。


方法摘要:

int read() 讀取單個字符。

int read(char[] cbuf)  將字符讀入數組

abstract  int read(char[] cbuf, int off, int len) 將字符讀入數組的某1部份。

long skip(long n)  跳過字符。


(4)LineNumberReader:

構造方法:

LineNumberReader(Reader in) 使用默許輸入緩沖區的大小創建新的行編號 reader。


方法摘要:

int read() 讀取單個字符。 

int read(char[] cbuf, int off, int len) 將字符讀入數組中的某1部份。 

String readLine() 讀取文本行。

long skip(long n) 跳過字符。 

int getLineNumber() 取得當前行號。 

void setLineNumber(int lineNumber) 設置當前行號。 

6、IO流常見需求:
字符流:
(1)需求1:在硬盤上創建1個文件并寫入信息
用字符寫入流:FileWriter
FileWriter fw = new FileWriter("g:\\filewriter.txt");
fw.write("輸入信息");
fw.write("也能夠寫入字符數組".toCharArray());
fw.flush();

fw.close();

(2)需求2:在原有文件上續寫數據
FileWriter fw = new FileWriter("g:\\filewriter.txt",true);
fw.write("還可以續寫信息");
fw.write("也能夠寫入字符數組".toCharArray());
fw.flush();

fw.close();


(3)需求3:讀取硬盤上的文本文件,并將數據打印在控制臺
FileReader fr = new FileReader("g:\\filewriter.txt");
**第1種讀取方法:1個1個字節的讀
int ch = 0;
ch = fr.read();
sop((char)ch);
fr.close();
**第2種讀取方法:利用數組來提高效力
char[] buf = new char[1024];
int len = 0;
while((len = fr.read(buf))!=⑴)
{
sop(new String(buf,0,len));
}

fr.close();


(4)需求4:拷貝文本文件
利用緩沖區提高數據讀寫效力
(無緩沖區就相當于1滴1滴的喝水,有緩沖區就相當于1杯1杯的喝水)
BufferedReader bufr = new BufferedReader(new FileReader("g:\\filewriter.txt"));
BufferedWriter bufw = new BufferedWriter(new FileWriter("d:\\copyfilewriter.txt"));
String line = null;
while((line = bufr.readLine())!=null)
{
burw.write(line);
bufw.newLine();
bufw.flush();
}
bufr.close();

bufw.close();


字節流:字節流寫入時沒有刷新
(1)需求1:在硬盤上創建1個文件并寫入信息(字節流寫入時沒有刷新)
FileOutputStream fos = new FileOutputStream("g:\\filestream.txt");
fos.write(97);//寫入1個字節,int:97代表寫入char:a
fos.write("也能夠寫入字節數組".getBytes());//通常使用此種方式寫入,直觀!
fos.close();

(2)需求2:在硬盤已有文件上續寫數據(字節流寫入時沒有刷新)

FileOutputStream fos = new FileOutputStream("g:\\filestream.txt",true);
fos.write("創建字節寫入流時,傳進去1個true參數就能夠繼續寫入信息".getBytes());

fos.close();


(3)需求3:讀取硬盤上的文件
FileInputStream fis = new FileInputStream("g:\\filestream.txt");
**第1種讀法:1個字節1個字節的讀(此種讀法慢)
int ch = 0;
while((ch = fis.read())!=⑴)
{
sop((char)ch);
}
**第1種讀法:利用字節數組讀(此種讀法效力有1定提高)
byte[] buf = new byte[1024];
int len = 0;
while((len = fis.read())!=⑴)
{
sop(new String(buf,0,len));

}


(4)需求4:拷貝字節文件,如圖片或MP3或電影
第1種拷貝:不帶緩沖區(慢,還是效力問題)
FileInputStream fis = new FileInputStream("g:\\1.mp3");
FileOutputStream fos = new FileOutputStream("g:\\copy1.mp3");
byte[] buf = new byte[1024];
int len = 0;
while((len = fis.read(buf))!=⑴)
{
fos.(buf,0,len);//字節流寫入無需刷新
}
fis.close();

fos.close();


第2種拷貝:帶緩沖區,高效
BufferedInputStream bufi = new BufferedInputStream(new FileInputStream("g:\\1.mp3"));
BufferedOutputStream bufo = new BufferedOutputStream(new FileOutputStream("g:\\copy1.mp3"));
int ch = 0;
while((ch = bufi.read())!=⑴)
{
bufo.write(ch);
}
bufi.close();

bufo.close();


轉換流:
(1)需求1:讀取1個鍵盤錄入
InputStream in = System.in;//創建1個鍵盤錄入流,流不關則可以1直錄入
int by1 = in.read();//1次讀1個字節
int by2 = in.read();//1次讀1個字節
sop(by1);//假定鍵盤錄入的是abcd,則打印a
sop(by2);//假定鍵盤錄入的是abcd,則打印b

in.close();


(2)需求2:鍵盤錄入1行數據打印1行數據,如果錄入的是over則結束錄入
InputStream in = System.in;
StringBuilder sb = new StringBuilder();
while(true)
{
int ch = in.read();
if(ch=='\r')
continue;
if(ch=='\n')
{
String line = sb.toString();
if("over".equals(line))
break;
sop(line.toUpperCase());//輸出大寫
sb.delete(0.sb.length());//清除上1行錄入的數據

}
else
sb.append((char)ch);

}

in.close();


(3)需求3:發現需求2中其實就是讀1行的原理,故引入字節通向字符的橋梁:InputStreamReader
為提高效力加入緩沖區:
BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
String line = null;
while((line = bufr.readLine())!=null)
{
if("over".equals(line))
break;
sop(line.toUpperCase());//輸出大寫
}

bufr.close();


(4)需求4:鍵盤錄入數據并打印到控制臺
BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bufw = new BufferedWriter(new OntputStreamWriter(System.out));
String line = null;
while((line = bufr.readLine())!=null)
{
if("over".equals(line))
break;
bufw.write(line.toUpperCase());
bufw.newLine();
bufw.flush();
}
bufr.close();

bufw.close();


(5)需求5:將鍵盤錄入的數據存儲到硬盤文件
則只需將(4)中的
BufferedWriter bufw = new BufferedWriter(new OntputStreamWriter(System.out));
改成:
BufferedWriter bufw = new BufferedWriter(new OntputStreamWriter(new FileWriter("g:\\demo.txt")));
即:
BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bufw = new BufferedWriter(new OntputStreamWriter(new FileWriter("g:\\demo.txt")));
String line = null;
while((line = bufr.readLine())!=null)
{
if("over".equals(line))
break;
bufw.write(line.toUpperCase());
bufw.newLine();
bufw.flush();
}
bufr.close();

bufw.close();


(6)需求6:將硬盤文件的數據打印到控制臺
則只需將(4)中的
BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
改成:
BufferedReader bufr = new BufferedReader(new InputStreamReader(new FileReader("g:\\demo.txt")));
即:
BufferedReader bufr = new BufferedReader(new InputStreamReader(new FileReader("g:\\demo.txt")));
BufferedWriter bufw = new BufferedWriter(new OntputStreamWriter(System.out));
String line = null;
while((line = bufr.readLine())!=null)
{
if("over".equals(line))
break;
bufw.write(line.toUpperCase());
bufw.newLine();
bufw.flush();
}
bufr.close();

bufw.close();


7、流操作的規律:
流操作的難點:流對象很多,不知道具體用哪一個
規律:
(1)第1步:先明確源和目的
源:
文本:用Reader
字節:用InputStream
目的:
文本:用Writer
字節:用OutputStream
(2)第2步:明確是否是純文本
是:用字符流;
不是:用字節流
(3)第3步:明確流體系后,通過裝備來明確具體使用哪一個流對象
源裝備:
鍵盤:System.in
硬盤:文件流File
內存:數組流ArrayStream
目的裝備:
鍵盤:System.out
硬盤:文件流File

內存:數組流ArrayStream


8、File類
構造方法:
File(String pathname) 
通過將給定路徑名字符串轉換為抽象路徑名來創建1個新 File 實例。 
File(String parent, String child) 
根據 parent 路徑名字符串和 child 路徑名字符串創建1個新 File 實例。
File(File parent, String child) 
根據 parent 抽象路徑名和 child 路徑名字符串創建1個新 File 實例。
方法摘要:
(1)創建:
boolean createNewFile() 
當且僅當不存在具有此抽象路徑名指定名稱的文件時,不可分地創建1個新的空文件。 
boolean mkdir() 
創建1級文件夾
boolean mkdirs() 
創建多級文件夾
(2)判斷
boolean canExecute() 
測試利用程序是不是可以履行此抽象路徑名表示的文件。 
boolean canRead() 
測試利用程序是不是可以讀取此抽象路徑名表示的文件。 
boolean canWrite() 
測試利用程序是不是可以修改此抽象路徑名表示的文件。
int compareTo(File pathname) 
按字母順序比較兩個抽象路徑名。 
boolean isAbsolute() 
測試此抽象路徑名是不是為絕對路徑名。 
boolean isDirectory() 
測試此抽象路徑名表示的文件是不是是1個目錄。 
boolean isFile() 
測試此抽象路徑名表示的文件是不是是1個標準文件。 
boolean isHidden() 
測試此抽象路徑名指定的文件是不是是1個隱藏文件。
boolean exists() 
測試此抽象路徑名表示的文件或目錄是不是存在。 
(3)獲得:
String getParent() 
返回此抽象路徑名父目錄的路徑名字符串;如果此路徑名沒有指定父目錄,則返回 null。 
File getParentFile() 
返回此抽象路徑名父目錄的抽象路徑名;如果此路徑名沒有指定父目錄,則返回 null。 
String getName() 
返回由此抽象路徑名表示的文件或目錄的名稱。
String getPath() 
將此抽象路徑名轉換為1個路徑名字符串。 
String getAbsolutePath() 
返回此抽象路徑名的絕對路徑名字符串。
File getAbsoluteFile() 
返回此抽象路徑名的絕對路徑名情勢。
(4)刪除:
boolean delete() 
刪除此抽象路徑名表示的文件或目錄。 
oid deleteOnExit() 
在虛擬機終止時,要求刪除此抽象路徑名表示的文件或目錄。 
(5)獲得全部:(非常重要!!!)
String[] list() 
返回1個字符串數組,這些字符串指定此抽象路徑名表示的目錄中的文件和目錄。 
String[] list(FilenameFilter filter) 
返回1個字符串數組,這些字符串指定此抽象路徑名表示的目錄中滿足指定過濾器的文件和目錄。 
File[] listFiles() 
返回1個抽象路徑名數組,這些路徑名表示此抽象路徑名表示的目錄中的文件。 
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 久久精品日产第一区二区三区 | √天堂8在线网 | 亚洲精品久久久久久一区二区 | 欧美视频在线观看免费 | 黄色大片免费观看 | 国产91九色 | 久久精品欧美 | 国产剧情精品 | 热99精品 | 久久久精品 | 精品在线一区 | 久久99国产精品久久99大师 | 亚洲电影免费 | 国内精品久久久久久中文字幕 | 在线一级片 | 日韩国产在线播放 | 精品综合久久久 | 久久久久久久婷婷 | 99福利| 日韩视频二区 | 国产一区二区三区不卡在线观看 | 韩国三级日本三级少妇99 | 国产一级黄色片子 | 在线射 | 中文 日韩 欧美 | 精品欧美乱码久久久久久1区2区 | 九九综合九九 | 日韩视频 中文字幕 视频一区 | 亚洲欧美一级 | 久久久高清| 欧美伊人精品成人久久综合97 | 欧美视频a| 欧美一级国产 | 一区二区三区不卡视频在线观看 | 高清一区二区三区日本久 | 日日干夜夜爽 | 欧美精品v国产精品v日韩精品 | 亚洲欧美第一页 | 国产精品卡一卡二 | 在线观看亚洲视频 | 日韩一区二区三区在线播放 |