㈠ java在IO流中怎麼樣讀取已有數據並且求和
import java.io.*;
public class NoInputNoOutput {
public static void main(String[] args) throws IOException {
System.out.println("-----開始寫入 -----");
// 當前目錄下建一文件
File f = new File("Exercise19_3.dat");
// 准備往裡面寫東西
OutputStream os = new FileOutputStream(f);
// 使用過濾流將寫入單位擴大為對象
DataOutputStream dos = new DataOutputStream(os);
// 定義4個整數
int[] data = { 1, 2, 3, 4 };
// 往文件里寫入4個數據
for (int i = 0; i < data.length; i++) {
dos.writeInt(data[i]);
}
// 摧毀指針以防止黑客對數據進行破壞
dos.close();
System.out.println("-----寫入完畢 -----");
System.out.println("+++++開始讀取 +++++");
// 輸出流
InputStream is = new FileInputStream(f);
// 過濾流
DataInputStream dis = new DataInputStream(is);
// 存放總和
int result = 0;
// 瘋狂地讀取
while (true) {
try {
// 每讀出一個整數累加到result中
result += dis.readInt();
} catch (Exception e) {
// 當讀取無法完成時跳出循環
break;
}
}
// 跳到這里
System.out.println("相加結果:" + result);
System.out.println("+++++讀取完畢+++++");
}
}
㈡ java io流是將數據全部載入在內存的流對象里才開始讀的嗎
是的,但你說的不全。讀取有倆種方式,一種是直接讀取,一種是先放在緩沖流中,再一並讀取。內存只是個中轉站,在第一種方式中,數據是先載入在內存區,然後又被馬上被讀取出去。在第二種方式中,它會有個緩沖區,其實也就是個可以重用的內存區,它是先讀取完放在緩沖區,然後一並讀取出去!
㈢ java中怎麼用io流讀寫文件
importjava.io.BufferedReader;
importjava.io.BufferedWriter;
importjava.io.FileReader;
importjava.io.FileWriter;
importjava.io.IOException;
publicclassTest14{
publicstaticvoidmain(String[]args)throwsIOException{
StringfPath="C:/test.txt";
//讀
BufferedReaderbr=newBufferedReader(newFileReader(fPath));
System.out.println(br.readLine());
br.close();////使用後記得關閉
//寫
BufferedWriterbw=newBufferedWriter(newFileWriter(fPath));
bw.write("寫一段話到文件里");
bw.flush();
bw.close();//使用後記得關閉
}
}
㈣ java用IO流一行行的讀取文件
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
class ThreadDemo{
public static void main(String[] args) throws IOException{
BufferedReader fr=new BufferedReader(new FileReader("a.txt"));//a.txt代表文件
String line=null;
while((line=fr.readLine())!=null){
System.out.println(line);
}
}
}
㈤ java怎麼使用io流讀取一個文件夾裡面
可以通過BufferedReader 流的形式進行流讀取,之後通過readLine方法獲取到讀取的內容。
BufferedReader bre = null;
try {
String file = "D:/test/test.txt";
bre = new BufferedReader(new FileReader(file));//此時獲取到的bre就是整個文件的緩存流
while ((str = bre.readLine())!= null) // 判斷最後一行不存在,為空結束循環
{
System.out.println(str);//原樣輸出讀到的內容
};
備註: 流用完之後必須close掉,如上面的就應該是:bre.close(),否則bre流會一直存在,直到程序運行結束。
㈥ java IO流 什麼意思
1. IO流也是Java中比較重要的一塊,Java中主要有位元組流,字元流,文件等。其中文件也是通過流的方式打開,讀取和寫入的。
2. IO流的很多介面都使用了裝飾者模式,即將原類型通過傳入裝飾類構造函數的方式,增強原類型,以此獲得像帶有緩沖區的位元組流,或者將位元組流封裝成字元流等等,其中需要注意的是編碼問題,後者列印出來的結果可能是亂碼哦。
3. IO流與網路編程息息相關,一個socket接入後,我們可以獲取它的輸入流和輸出流,以獲取TCP數據包的內容,並且可以往數據報里寫入內容,因為TCP協議也是按照流的方式進行傳輸的,實際上TCP會將這些數據進行分包處理,並且通過差錯檢驗,超時重傳,滑動窗口協議等方式,保證了TCP數據包的高效和可靠傳輸。
㈦ java 如何用io流 讀取list集合里我需要的內容,然後寫入到.txt文件里各位大俠請賜教
importorg.junit.Test;
importjava.io.*;
importjava.util.ArrayList;
importjava.util.List;
publicclassTestIo{
//路徑
privatestaticfinalStringPATH="D:\demo1.txt";
@Test
publicvoidtestIo()throwsIOException{
List<String>list=newArrayList<>();
list.add("1");
list.add("2");
list.add("3");
list.add("4");
list.add("5");
Filefile=newFile(PATH);
//如果沒有文件就創建
if(!file.isFile()){
file.createNewFile();
}
//
BufferedWriterwriter=newBufferedWriter(newFileWriter(PATH));
for(Stringl:list){
writer.write(l);
}
writer.close();
System.out.println("完成");
}
}
結果
希望對你有幫助
㈧ java中io流的讀寫方法怎麼實現讀取下一個元素的
類似於下面這些代碼實現讀取下一個元素:
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class Test14 {
public static void main(String[] args) throws IOException {
String fPath = "C:/test.txt";
// 讀
BufferedReader br = new BufferedReader(new FileReader(fPath));
System.out.println(br.readLine());
br.close();// // 使用後記得關閉
// 寫
BufferedWriter bw = new BufferedWriter(new FileWriter(fPath));
bw.write("寫一段話到文件里");
bw.flush();
bw.close();// 使用後記得關閉
}
}
㈨ 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類的對象序列化到磁碟
創建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 io 可以讀取什麼格式的文件
IO流可以讀取一切文件,常用的有位元組流跟字元流,讀取文檔類的我們使用位元組流,其他如視頻MP3等文件的時候我們使用字元流,為了提高效率我們常套接在緩沖流上面