導航:首頁 > 編程語言 > java中的流與文件

java中的流與文件

發布時間:2022-08-03 08:39:09

java流與文件處理,請看代碼:

這種情況,100%是配置環境變數的問題。通過cmd 運行java ,出現找不到class,就是環境變數沒有完整的配置好

② java中的流是什麼

流是個抽象的概念,是對輸入輸出設備的抽象,Java程序中,對於數據的輸入/輸出操作都是以「流」的方式進行。設備可以是文件,網路,內存等。

流具有方向性,至於是輸入流還是輸出流則是一個相對的概念,一般以程序為參考,如果數據的流向是程序至設備,我們成為輸出流,反之我們稱為輸入流。

可以將流想像成一個「水流管道」,水流就在這管道中形成了,自然就出現了方向的概念。
當程序需要從某個數據源讀入數據的時候,就會開啟一個輸入流,數據源可以是文件、內存或網路等等。相反地,需要寫出數據到某個數據源目的地的時候,也會開啟一個輸出流,這個數據源目的地也可以是文件、內存或網路等等。

可以從不同的角度對流進行分類:

1. 處理的數據單位不同,可分為:字元流,位元組流

2.數據流方向不同,可分為:輸入流,輸出流

3.功能不同,可分為:節點流,處理流

1. 和 2. 都比較好理解,對於根據功能分類的,可以這么理解:

節點流:節點流從一個特定的數據源讀寫數據。即節點流是直接操作文件,網路等的流,例如FileInputStream和FileOutputStream,他們直接從文件中讀取或往文件中寫入位元組流。

處理流:「連接」在已存在的流(節點流或處理流)之上通過對數據的處理為程序提供更為強大的讀寫功能。過濾流是
使用一個已經存在的輸入流或輸出流連接創建的,過濾流就是對節點流進行一系列的包裝。例如BufferedInputStream和
BufferedOutputStream,使用已經存在的節點流來構造,提供帶緩沖的讀寫,提高了讀寫的效率,以及DataInputStream和
DataOutputStream,使用已經存在的節點流來構造,提供了讀寫Java中的基本數據類型的功能。他們都屬於過濾流。

來源:
http://www.cnblogs.com/shitouer/archive/2012/12/19/2823641.html

③ 拜託拜託,有一個關於java程序的流與文件的問題,完全不知道怎麼做,求解各位大神QAQ

思路建議:for循環控制產生360個隨機數作為變數值傳給sin()函數,返回值為要得到的數據,分別用io流將數據存儲到文件中;輸出「要求間隔均勻」是指在360°范圍內的值么?如果是那麼控制間隔輸出。

④ 在java 中文件流和數據流的區別

文件流是通過方法可以知道長度,名稱等詳細信息的數據流。主要用於文件操作,在文件流中有自己的適用於文件操作的數據格式。而數據流是一個統稱,所有的流都可以稱為數據流。文件流屬於數據流的一種。

⑤ java中如何將流轉換成文件類型

我查了一下,File的api
這個File的構造方法的介紹。。。
File(File
parent,
String
child)
根據
parent
抽象路徑名和
child
路徑名字元串創建一個新
File
實例。
File(String
pathname)
通過將給定路徑名字元串轉換成抽象路徑名來創建一個新
File
實例。
File(String
parent,
String
child)
根據
parent
路徑名字元串和
child
路徑名字元串創建一個新
File
實例。
File(URI
uri)
通過將給定的
file:
URI
轉換成一個抽象路徑名來創建一個新的
File
實例。
也就意味著,如果,file這種類型,就必須有一個路徑。
那,能不能在內存中虛擬一個File
file呢?
File
f
=
new
File("/1.txt");
假如這樣,那麼,一旦,你開始往這個file裡面開流寫內容。只有兩種情況可能發生,一種是找不到文件,拋異常。另外一種可能是,直接create了一個文件出來,並且寫進去這個文件~~
所以,如果是這樣的情況,就很郁悶。
那麼,在user對象中,如果非要放File文件類型格式,那麼,就寫到一個臨時文件里吧。等用完之後刪除。
如果該成byte[]
或者別的內容,如果你要用數據,其實會更加方便,不用開流從文件裡面讀取,而是直接從這個數組裡面讀就是了。
所以,建議把這個User裡面的文件變成byte[]

一點淺見~~
另祝節日愉快~~

⑥ Java字元流和位元組流對文件操作的區別

Java字元流是處理字元(Char)對象用的,位元組流是處理位元組(Byte)對象用的。處理的目標對象不同,處理方法也就不一樣了。

字元流處理的基本單位是字元(Java中的字元是16位的),輸入流以Reader為基礎,輸出流以Writer為基礎;
位元組流的基本單位是位元組(Java中的位元組是8位的),輸入流以 InputStream為基礎,輸出流以 OutputStream為基礎;

字元流在輸入時可以按字元讀取,也可以按行讀取,會去掉回車換行,常用於讀取字元數據;
而位元組流按位元組讀取,不作任何處理,常用於讀取二進制數據。

Java中的字元在內部都是使用Unicode進行表示的,因此,要正確讀取字元數據,需要知道字元的編碼字元集,字元流提供編碼字元集的指定,如果不指定使用系統默認的方式對字元數據進行編碼轉換,這個編碼字元集不正確,會造成讀進來的地字元出現亂碼。

位元組流雖然是讀取二進制數據用的,但也可以讀取字元文件,按位元組進行處理,讀進來之後可以根據編碼字元集進行轉換,也可以變成字元串。

⑦ java簡單編程之文件與數據流

是不是這樣的?控制台與文本都可以

我只會這樣的,輸入任意字母都可以變成你想要的圖案,如果是,可以跟我說,這很簡單!

如果不是,那就我理解錯了!

⑧ java的幾種IO流讀取文件方式

一、超類:


位元組流: InputStream(讀入流) OutputStream(寫出流)


字元流: Reader(字元 讀入流) Writer (字元寫出流)

二、文件操作流


位元組流: FileInputStream ,FileOutputStream


字元流: FileReader, FileWriter(用法與位元組流基本相同,不寫)

//1.指定要讀 的文件目錄及名稱


File file =new File("文件路徑");


//2.創建文件讀入流對象


FileInputStream fis =new FileInputStream(file);


//3.定義結束標志,可用位元組數組讀取


int i =0 ;


while((i = fis.read())!=-1){


//i 就是從文件中讀取的位元組,讀完後返回-1


}


//4.關閉流


fis.close();


//5.處理異常

//1.指定要寫到的文件目錄及名稱


File file =new File("文件路徑");


//2.創建文件讀入流對象


FileOutputStream fos =new FileOutputStream(file);


//3.定義結束標志


fos.write(要寫出的位元組或者位元組數組);


//4.刷新和關閉流


fos.flush();


fos.close();


//5.處理異常

三、緩沖流:


位元組緩沖流: BufferedInputStream,BufferedOutputStream


字元緩沖流:BufferedReader ,BufferedWriter


緩沖流是對流的操作的功能的加強,提高了數據的讀寫效率。既然緩沖流是對流的功能和讀寫效率的加強和提高,所以在創建緩沖流的對象時應該要傳入要加強的流對象。

//1.指定要讀 的文件目錄及名稱


File file =new File("文件路徑");


//2.創建文件讀入流對象


FileInputStream fis =new FileInputStream(file);


//3.創建緩沖流對象加強fis功能


BufferedInputStream bis =new BufferedInputStream(fis);


//4.定義結束標志,可用位元組數組讀取


int i =0 ;


while((i = bis.read())!=-1){


//i 就是從文件中讀取的位元組,讀完後返回-1


}


//5.關閉流


bis.close();


//6.處理異常

//1.指定要寫到的文件目錄及名稱


File file =new File("文件路徑");


//2.創建文件讀入流對象


FileOutputStream fos =new FileOutputStream(file);


//3.創建緩沖流對象加強fos功能


BufferedOutputStream bos=new BufferedOutputStream(fos);


//4.向流中寫入數據


bos.write(要寫出的位元組或者位元組數組);


//5.刷新和關閉流


bos.flush();


bos.close();


//6.處理異常

四、對象流


ObjectInputStream ,ObjectOutputStream


不同於以上兩種類型的流這里只能用位元組對對象進行操作原因可以看上篇的編碼表比照原理

ObjectOutputStream對象的序列化:


將java程序中的對象寫到本地磁碟里用ObjectOutputStream


eg:將Person類的對象序列化到磁碟

  1. 創建Person類


    注1:此類要實現Serializable介面,此介面為標志性介面


    注2:此類要有無參的構造函數


    注3:一旦序列化此類不能再修改


    class Person implements Serializable{


    public Person(){}


    }


    2.創建對象流對象


    註:要增強功能可以將傳入文件緩沖流


    ObjectOutputStream oos =new ObjectOutputStream(


    new FileOutputStream(new File("文件路徑")));


    3.寫入對象 ,一般會將對象用集合存儲起來然後直接將集合寫入文件


    List<Person> list =new ArrayList<>();


    list.add(new Person());


    ...(可以添加多個)


    oos.writeObject(list);


    4.關閉流,處理異常


    oos.flush();


    oos.close();

五、轉換流:

這類流是用於將字元轉換為位元組輸入輸出,用於操作字元文件,屬於字元流的子類,所以後綴為reader,writer;前綴inputstream,outputstream;

注 :要傳入位元組流作為參賽


InputStreamReader: 字元轉換輸出流


OutputStreamWriter:字元轉換輸入流

//1.獲取鍵盤輸入的位元組流對象

inInputStream in =Stream.in;

/*2.用轉換流將位元組流對象轉換為字元流對象,方便調用字元緩沖流的readeLine()方法*/


InputStreamReader isr =new InputStreamReader(in);


/*5.創建字元轉換輸出流對象osw,方便把輸入的字元流轉換為位元組輸出到本地文件。*/


OutputStreamWriter osw =new OutputStreamWriter(new
FileOutputStream(new File("文件名")));



/*3.現在isr是字元流,可以作為參數傳入字元緩沖流中*/


BufferedReader br =new BufferedReader(isr);

/*4.可以調用字元緩沖流br的readLine()方法度一行輸入文本*/


String line =null;


while((line =br.readLine()){


osw.write(line);//osw是字元流對象,可以直接操作字元串

}



註:InputStreamReader isr =new InputStreamReader(new "各種類型的位元組輸入流都行即是:後綴為InputStream就行");


OutputStreamWriter osw =new OutputStreamWriter(new
"後綴為OutputStream就行");

六、區別記憶


1.對象流是可以讀寫幾乎所有類型的只要是對象就行,而位元組字元流,只能讀寫單個位元組字元或者位元組字元數組,以上沒有讀寫位元組字元數組的;注意對象流只有位元組流!


2.字元和位元組循環讀入的結束條件int i=0; (i =fis.read())!=-1
用字元數組復制文件(fr 讀入流 ,fw寫出流),位元組流也是相同的用法

int i = 0; char[] c = new char[1024];


while((i = fr.reade()) !=-1)){


fw.write(c,0,i);


}

123456

3.對象流裡面套緩沖流的情景:


new ObjectInputStream(new BufferedInputStream(new FileInputStream(new File(「文件路徑」))));

4.記憶流及其功能的方法:


前綴表示功能,後綴表示流的類型;


比如說FileInputStream 前綴:File,表示操作的磁碟,後綴:intputstream,表示是位元組輸入流。


同理 FileReader:表示操作文件的字元流


ObjectInputStream :操作對象的位元組輸入流

5.拓展:獲取鍵盤輸入的字元的緩沖流的寫法:


new BufferedReader(new InputStreamReader(System.in)));


將位元組以字元形式輸出到控制台的字元緩沖流的寫法:


new BufferedWriter( new OutputStreamWriter(System.out))

⑨ java中的「流」是什麼

流是個抽象的概念,是對輸入輸出設備的抽象,java程序中,對於數據的輸入/輸出操作都是以「流」的方式進行。設備可以是文件,網路,內存等。
流具有方向性,至於是輸入流還是輸出流則是一個相對的概念,一般以程序為參考,如果數據的流向是程序至設備,我們成為輸出流,反之我們稱為輸入流。
可以將流想像成一個「水流管道」,水流就在這管道中形成了,自然就出現了方向的概念。
當程序需要從某個數據源讀入數據的時候,就會開啟一個輸入流,數據源可以是文件、內存或網路等等。相反地,需要寫出數據到某個數據源目的地的時候,也會開啟一個輸出流,這個數據源目的地也可以是文件、內存或網路等等。
可以從不同的角度對流進行分類:
1.
處理的數據單位不同,可分為:字元流,位元組流
2.數據流方向不同,可分為:輸入流,輸出流
3.功能不同,可分為:節點流,處理流
1.

2.
都比較好理解,對於根據功能分類的,可以這么理解:
節點流:節點流從一個特定的數據源讀寫數據。即節點流是直接操作文件,網路等的流,例如fileinputstream和fileoutputstream,他們直接從文件中讀取或往文件中寫入位元組流。
處理流:「連接」在已存在的流(節點流或處理流)之上通過對數據的處理為程序提供更為強大的讀寫功能。過濾流是
使用一個已經存在的輸入流或輸出流連接創建的,過濾流就是對節點流進行一系列的包裝。例如bufferedinputstream和
bufferedoutputstream,使用已經存在的節點流來構造,提供帶緩沖的讀寫,提高了讀寫的效率,以及datainputstream和
dataoutputstream,使用已經存在的節點流來構造,提供了讀寫java中的基本數據類型的功能。他們都屬於過濾流。
來源:
http://www.cnblogs.com/shitouer/archive/2012/12/19/2823641.html

⑩ 如何理解java中的流概念

一、概念
Java中對文件的操作是以流的方式進行的。流是Java內存中的一組有序數據序列。Java將數據從源(文件、內存、鍵盤、網路)讀入到內存中,形成了流,然後將這些流還可以寫到另外的目的地(文件、內存、控制台、網路),之所以稱為流,是因為這個數據序列在不同時刻所操作的是源的不同部分。
二、分類
流的分類,Java的流分類比較豐富,剛接觸的人看了後會感覺很暈。流分類的方式很多:
1、按照輸入的方向分,輸入流和輸出流,輸入輸出的參照對象是Java程序。
2、按照處理數據的單位不同分,位元組流和字元流,位元組流讀取的最小單位是一個位元組(1byte=8bit),而字元流一次可以讀取一個字元(1char = 2byte = 16bit)。
3、按照功能的不同分,分節點流和處理流,節點流是直接從一個源讀寫數據的流(這個流沒有經過包裝和修飾),處理流是在對節點流封裝的基礎上的一種流,FileInputStream是一個接點流,可以直接從文件讀取數據,但是BufferedInputStream可以包裝 FileInputStream,使得其有緩沖功能。
其實除了以上三種分類外,還有一些常常聽到的一些分類比如:對象流、緩沖流、壓縮流、文件流等等。其實都是節點流和處理流的子分類。當然你也可以創建新的流類型,只要你需要。
三、流分類的關系
不管流的分類是多麼的豐富和復雜,其根源來自於四個基本的類。這個四個類的關系如下:
位元組流 字元流
輸入流 InputStream Reader
輸出流 OutputStream Writer
<!-- EndFragment-->
四、位元組流和字元流的相互轉換
1、從位元組流到字元流:InputStreamReader、OutputStreamWriter類可以實現。
2、從字元流到位元組流:可以從字元流中獲取char[]數組,轉換為String,然後調用String的API函數getBytes() 獲取到byte[],然後就可以通過ByteArrayInputStream、ByteArrayOutputStream來實現到位元組流的轉換。

閱讀全文

與java中的流與文件相關的資料

熱點內容
農行app怎麼開網銀 瀏覽:649
java迭代器遍歷 瀏覽:301
閩政通無法請求伺服器是什麼 瀏覽:48
怎麼做積木解壓神器 瀏覽:203
王者榮耀解壓玩具抽獎 瀏覽:49
12位是由啥加密的 瀏覽:868
程序員編迷你世界代碼 瀏覽:895
php取現在時間 瀏覽:246
單片機高吸收 瀏覽:427
怎麼區分五代頭是不是加密噴頭 瀏覽:244
hunt測試伺服器是什麼意思 瀏覽:510
2013程序員考試 瀏覽:641
畢業論文是pdf 瀏覽:736
伺服器跑網心雲劃算嗎 瀏覽:471
單片機定時器計數初值的計算公式 瀏覽:801
win7控制台命令 瀏覽:567
貓咪成年app怎麼升級 瀏覽:692
360有沒有加密軟體 瀏覽:315
清除cisco交換機配置命令 瀏覽:751
華為刪除交換機配置命令 瀏覽:473