1. 程式人生 > 其它 >javascript陣列的方法

javascript陣列的方法

一、流的分類:
1.操作資料單位:位元組流、字元流
2.資料的流向:輸入流、輸出流
3.流的角色:節點流、處理流

抽象基類 位元組流 字元流
輸入流 InputStream Reader
輸出流 OutputStream Writer


二、流的體系結構

抽象基類 節點流(或檔案流) 緩衝流(處理流的一種)
InputStream FileInputStream(read(byte[] buffer)) BufferedInputStream (read(byte[] buffer))
OutputStream FileOutputStream(write(byte[] buffer,0,len) BufferedOutputStream (write(byte[] buffer,0,len) / flush()
Reader FileReader (read(char[] cbuf)) BufferedReader (read(char[] cbuf) / readLine())
Writer FileWriter (write(char[] cbuf,0,len) BufferedWriter (write(char[] cbuf,0,len) / flush()
說明點:
1. read()的理解:返回讀入的一個字元。如果達到檔案末尾,返回-1
2. 異常的處理:為了保證流資源一定可以執行關閉操作。需要使用try-catch-finally處理
3. 讀入的檔案一定要存在,否則就會報FileNotFoundException。

學會對read()操作升級:使用read的過載方法

示例程式碼:

@Test
public void testFileReader1(){
FileReader fr = null;
try{
//1.File類的例項化
File file = new File("hello.txt");
//2.FileReader流的例項化
fr = new FileReader(file);

//3. 讀入的操作
//read(char[] cbuf):返回每次讀入cbuf陣列中的字元的個數。如果大奧檔案末尾,返回-1
char[] cbuf = new char[5];
int len;
while((len = fr.read(cbuf)) != -1){
String str = new String(cbuf, 0 ,len);
System.out.println(str);
}

}catch (IOException e){
e.printStackTrace();
}finally {
if(fr != null){
try {
fr.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}


//3. 讀入的操作
//read(char[] cbuf):返回每次讀入cbuf陣列中的字元的個數。如果大奧檔案末尾,返回-1
char[] cbuf = new char[5];
int len;
while((len = fr.read(cbuf)) != -1){
String str = new String(cbuf, 0 ,len);
System.out.println(str);
}

}catch (IOException e){
e.printStackTrace();
}finally {
if(fr != null){
try {
fr.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}

讀取檔案的推薦方式:

while((len = fr.read(cbuf)) != -1){
String str = new String(cbuf, 0 ,len);
System.out.println(str);
}
從記憶體中寫出資料到硬碟的檔案裡。

說明:
1. 輸出操作,對應的File可以不存在的。並不會報異常
2. File對應的硬碟中的檔案如果不存在,在輸出的過程中,會自動建立此檔案。
File對應的硬碟中的檔案如果存在:
如果流使用的構造器是:FileWriter(file,false) / FileWriter(file):對原有檔案的覆蓋
如果流使用的構造器是:FileWriter(file,true):不會對原有檔案覆蓋,而是在原有檔案基礎上追加內容