FileInputSream類

目前創(chuàng)新互聯(lián)建站已為近1000家的企業(yè)提供了網(wǎng)站建設(shè)、域名、虛擬主機、網(wǎng)站托管維護、企業(yè)網(wǎng)站設(shè)計、紅安網(wǎng)站維護等服務,公司將堅持客戶導向、應用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
FileInputStream(String name)
FileInputStream(File file)
第一個構(gòu)造方法是用給定的文件名name創(chuàng)建一個FileInputStream對象
第二個方法使用File對象創(chuàng)建FileInputStream對象
使用文件輸入流讀取文件
例如
FileInputStream istream=new FileInputStream(“myfile.dat”);
或
File f=new File(“myfile.dat”);
FileInputStream istream =new FileInputStream(f);
處理IO異常
Try{
FileInputStream istream=new FileInputStream(“myfile.dat”);
}
Catch(IOException e){}
從輸入流中讀取字節(jié)
Int read();從輸入流中順序讀取源中的單個字節(jié)數(shù)據(jù),返回字節(jié)值(0~255之間的一個整數(shù)),如果到達源的末尾,則返回-1
Read方法還可以吧多個字節(jié)讀入到字節(jié)數(shù)組中:
Int read(byte b[]);
Int read(byte b[],int off,int len);
關(guān)閉流
使用close();
FileOutputStream類
該類提供了基本的文件寫入能力,除了從OutputStream類繼承來的方法外,F(xiàn)ileOutputStream類還提供了兩個構(gòu)造方法:
FileOutputStream(String name)
FileOutputStream(File file)
第一個構(gòu)造方法,給指定的文件名name創(chuàng)建一個FileOutputStreak對象
第二個構(gòu)造方法,使用File對象創(chuàng)建FileOutputStream對象
可以使用write()方法把字節(jié)寫入到輸出流到達目的地
Write的格式:
Public void write(byte b[]) 其功能就是把b.length個字節(jié)到輸出流
Public void write(byte b[],int off,int len)給定字節(jié)數(shù)組中,偏移off處寫入len個字節(jié)到輸出流
FileOutputStream流順序的寫文件,只要不關(guān)閉流,每次調(diào)用write方法就順序地向輸出流寫入內(nèi)容,直到流被關(guān)閉。
以上代碼見hyh.io--File/Fileinputstream/Fileoutputsream
以上輸入輸出流容易出現(xiàn)的問題就是:漢字亂碼
FileReader類和FileWriter類
與FileInputStream和FileOutputStream字節(jié)流相對應的是FileReader和FileWriter字符流,其分別是Reader和Writer的子類,構(gòu)造方法如下:
FileReader(String filename)
FileWriter(String filename)
使用字節(jié)讀取文件時,字節(jié)流不能直接操作Unicode字符,所以Java提供字符流。由于漢字在文件中占用了兩個字節(jié),如果使用字節(jié)流,讀取不當會出現(xiàn)亂碼現(xiàn)象,采用字符流就可以避免這個現(xiàn)象,因為在Unicode字符中,一個漢字被看做一個字符。
如果需要每次讀取一行數(shù)據(jù),F(xiàn)ileReader類沒有提供這樣的方法,所以必須把這個流再接到另外一個流傷,從后面的流中讀取一行數(shù)據(jù)。Java為其命名為BufferedReader類,構(gòu)造方法:
BufferedReader(Reader in)
BufferedReader流能夠讀取文本行,方法是readLine()
通過向BufferedReader傳遞一個Reader對象,來創(chuàng)建一個BufferedReader對象,
FileReader inone=new FileReader(“Student.txt”);
BufferedReader intwo=BufferedReader(inone);
類似的可以將BufferedWriter流和FileWriter流連接在一起,然后使用BufferedWriter流將數(shù)據(jù)寫到目的地,
FileWriter tofile=new FileWriter(”hello.txt”);
BufferedWriter out=BufferedWriter(tofile)
然后out使用BufferedReader類的方法:
Write(String s,int off,int len)把字符串s寫入到文件中,off是s開始處的偏移量,len是寫入的字符數(shù)量
代碼詳情見hyh.javaio.FileReaderandWriter
代碼總結(jié):FileReader和FileWriter可以進行漢字的讀取和寫入
BufferedReader有讀取行的功能,readLine()
RandomAccessFile類
RandomAccessFile類創(chuàng)建的流指向既可以作為源也可以作為目的地。換句話說,當想對一個文件進行讀寫操作時,可以創(chuàng)建一個指向該文件的RandomAccessFile流
構(gòu)造方法:
RandomAccessFile(String name,String mode)參數(shù)name用來確定一個文件名,給出流的源。參數(shù)mode取r或者rw(只讀或者讀寫),決定對文件的訪問權(quán)限。
RandomAccessFile(File file,String mode)參數(shù)file是一個File對象,給出源,同時也是目的地。參數(shù)mode決定訪問權(quán)限。
該類中有一個seek(long a)方法,用來定位RandomAccessFile流的讀寫位置。參數(shù)a確定讀寫位置距離文件開頭的字節(jié)個數(shù)。
還可以調(diào)用getFilePointer()方法或者流當前的讀寫位置
類方法P280:
關(guān)閉文件
獲取讀寫位置等。。。。。。。。
使用RandomAccessFile流實現(xiàn)一個通訊錄的錄入與顯示系統(tǒng)
見RandomAccessFile
數(shù)據(jù)流P284
數(shù)組流P286
對象流P288
序列化與對象克隆P290
文件鎖FileLockP293
Process類中的流P295
帶進度條的輸入流P298(這個是我自己整理的一部分的學習筆記,教材為Java2實用教程第三版(耿祥義編著),因為使用了word進行整理,首字母大寫忘記取消和一些代碼在myeclipse上,但是不妨礙你查看)
io。就是操作文件嘛。在公司經(jīng)常有用到的。
現(xiàn)在是講例子1:
//創(chuàng)建一個新文件
importjava.io.*;
classhello{
publicstaticvoidmain(String[] args) {
File f=newFile("D:\\hello.txt");
try{
f.createNewFile();
}catch(Exception e) {
e.printStackTrace();
}
}
}
//程序運行之后,在d盤下會有一個名字為hello.txt的文件。
例子2:
//File類的兩個常量
importjava.io.*;
classhello{
publicstaticvoidmain(String[] args) {
System.out.println(File.separator);
System.out.println(File.pathSeparator);
}
}
運行結(jié)果:\
;
現(xiàn)在用常量來改動寫上面的代碼:
importjava.io.*;
classhello{
publicstaticvoidmain(String[] args) {
String fileName="D:"+File.separator+"hello.txt";
File f=newFile(fileName);
try{
f.createNewFile();
}catch(Exception e) {
e.printStackTrace();
}
}
}
用這些,建議使用常量,因為代碼寫的少了。
案例3:
//刪除一個文件
importjava.io.*;
classhello{
publicstaticvoidmain(String[] args) {
String fileName="D:"+File.separator+"hello.txt";
File f=newFile(fileName);
if(f.exists()){
f.delete();
}else{
System.out.println("文件不存在");
}
}
}
案例4:創(chuàng)建一個文件夾
importjava.io.*;
classhello{
publicstaticvoidmain(String[] args) {
String fileName="D:"+File.separator+"hello";
File f=newFile(fileName);
f.mkdir();
}
}
案例5:列出指定目錄的全部文件(包括隱藏文件):
importjava.io.*;
classhello{
publicstaticvoidmain(String[] args) {
String fileName="D:"+File.separator;
File f=newFile(fileName);
String[] str=f.list();
for(inti =0; i str.length; i++) {
System.out.println(str[i]);
}
}
}
大概的簡單的東西,就這些了吧。你自己好好看看吧,歡迎追問。
流就是“一串東西"。
1、比如我們吸飲料里面的冰塊,如果冰塊不融化成水我們就吸不到
2、冰塊就是一個東西,冰塊融化成水就是形成"流"過程,這樣我們就可以吸到
3、對應代碼就是:如:一個java程序里的一張圖片,形成java流,這樣就能傳到另外一函數(shù)或者程序
本文標題:java中流的代碼示例,簡述java中流的分類
網(wǎng)站網(wǎng)址:http://chinadenli.net/article37/dseehpj.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供建站公司、移動網(wǎng)站建設(shè)、網(wǎng)站策劃、標簽優(yōu)化、面包屑導航、品牌網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)