亚洲一区精品自拍_2021年国内精品久久_男同十八禁gv在线观看_免费观看a级性爱黄片

Article / 文章中心

文件IO流

發(fā)布時(shí)間:2021-12-03 點(diǎn)擊數(shù):767

文件與流

內(nèi)存:斷電后所數(shù)據(jù)都丟失,程序結(jié)束后所有變量、對(duì)象都被系統(tǒng)回收


文件:斷電后數(shù)據(jù)不丟失,以文件為單位進(jìn)行操作


根據(jù)流向和數(shù)據(jù)單位可以分成4種流

   輸入字節(jié)流


   輸出字節(jié)流



   輸入字符流


   輸出字符流


   輸入輸出是站在內(nèi)存的角度,讀寫(xiě)是站在文件的角度


輸入(從內(nèi)存)——讀


輸出——寫(xiě)


操作文件的步驟

讀文件

創(chuàng)建文件和對(duì)象的關(guān)聯(lián)

使用File類來(lái)創(chuàng)建文件對(duì)象



創(chuàng)建數(shù)據(jù)流通道

InputStream類是所有輸入字節(jié)流的父類,它是一個(gè)抽象類


實(shí)際的文件操作使用FileInputStream類來(lái)完成


這個(gè)類會(huì)拋出一個(gè)異常FileNotFoundException



讀取文件

int read( )                   每次讀取一個(gè)字節(jié)的數(shù)據(jù),存入返回值中,結(jié)束時(shí)返回-1


int read(byte[] b)       每次讀取b.length個(gè)字節(jié)的數(shù)據(jù),存入數(shù)組b中,結(jié)束時(shí)返回-1



關(guān)閉流通道

close( )



寫(xiě)文件

創(chuàng)建文件的關(guān)聯(lián)

使用File類來(lái)創(chuàng)建文件對(duì)象


創(chuàng)建數(shù)據(jù)流通道

OutputStream類是所有輸出字節(jié)流的父類,它是一個(gè)抽象類


FileOutputStream類來(lái)完成文件的寫(xiě)操作


這個(gè)類會(huì)拋出一個(gè)異常FileNotFoundException



當(dāng)寫(xiě)入的文件不存在時(shí),會(huì)先創(chuàng)建文件,再進(jìn)行寫(xiě)入

當(dāng)寫(xiě)入的文件存在時(shí),會(huì)將內(nèi)容清空,再?gòu)念^寫(xiě)入

當(dāng)寫(xiě)入的文件存在時(shí),并且將append參數(shù)設(shè)為true時(shí),數(shù)據(jù)將寫(xiě)入到文件末尾


寫(xiě)入文件

write(int b)


write(byte[]  b)


關(guān)閉流通道

close( )



字節(jié)緩沖流

緩沖輸入字節(jié)流  BufferedInputStream


緩沖輸出字節(jié)流  BufferedOutputStream



處理過(guò)程


創(chuàng)建文件和對(duì)象的關(guān)聯(lián)

創(chuàng)建數(shù)據(jù)流通道

基于流通道,創(chuàng)建緩沖流通道

讀/寫(xiě)文件

關(guān)閉流通道


字符流

輸入字符流


Reader類是所有輸入字符流的父類,它是一個(gè)抽象類


     實(shí)際的文件操作使用FileReader類來(lái)完成



輸出字符流


     Writer類是所有輸出字符流的父類,它是一個(gè)抽象類


     實(shí)際的文件操作使用FileWriter類來(lái)完成



處理過(guò)程


創(chuàng)建文件和對(duì)象的關(guān)聯(lián)

創(chuàng)建數(shù)據(jù)流通道

讀/寫(xiě)文件

關(guān)閉流通道


結(jié)論:


     如果要處理非文本文件,如音頻、視頻、圖片等,使用字節(jié)流


     如果要處理文本文件,如.txt文件,使用字符流


字符緩沖流

緩沖輸入字符流


     BufferedReader


                    String  readLine()   每次從文件中讀一行文本



緩沖輸出字符流


     BufferedWriter


                    void  newLine( )    向文件中寫(xiě)入1個(gè)空行



字符緩沖流在原有的功能上進(jìn)行了擴(kuò)展



處理過(guò)程


創(chuàng)建文件和對(duì)象的關(guān)聯(lián)

創(chuàng)建數(shù)據(jù)流通道

基于流通道,創(chuàng)建緩沖流通道

讀/寫(xiě)文件

關(guān)閉流通道


異常處理

在文件操作過(guò)程中要處理異常的原因


保證數(shù)據(jù)的完整性

保證資源及時(shí)釋放


保證close會(huì)被執(zhí)行


對(duì)象流

輸入對(duì)象流 ObjectInputStream


             Object   readObject()



輸出對(duì)象流 ObjectOuputStream


          void     writeObject(Object obj)



處理過(guò)程


創(chuàng)建文件和對(duì)象的關(guān)聯(lián)

創(chuàng)建數(shù)據(jù)流通道

基于流通道,創(chuàng)建對(duì)象流通道

讀/寫(xiě)文件

關(guān)閉流通道

public static void main(String[] args) throws IOException {


      File file =new File("e:/test.txt");


      student stu =new student();


      //寫(xiě)入對(duì)象


      FileOutputStream fo=new FileOutputStream(file);


      ObjectOutputStream oo=new ObjectOutputStream(fo);


      oo.writeObject(stu);


      oo.close();


      System.out.println("done");


 }


說(shuō)明:要將對(duì)象寫(xiě)入文件,該要實(shí)現(xiàn)Serializable接口



結(jié)論:文件和內(nèi)存是完全不同的使用方式,因此我們不能象使用集合那樣去操作文件中的對(duì)象


     對(duì)文件通常進(jìn)行整體處理


            寫(xiě)入處理


將多個(gè)對(duì)象保存到集合

將集合一次性的寫(xiě)入文件


讀出處理


將文件讀入一個(gè)集合中

再對(duì)集合中的對(duì)象進(jìn)行操作


打印流

PrintStream


通常用于輸入Log日志



處理過(guò)程


創(chuàng)建文件和對(duì)象的關(guān)聯(lián)

創(chuàng)建數(shù)據(jù)流通道

基于流通道,創(chuàng)建打印流通道

讀/寫(xiě)文件

關(guān)閉流通道



1.delete目錄下全部文件:


file.delete不能刪除非空目錄

public class fileclear {  public static void main(String[] args) {  File file=new File("E:\\Youku Files\\youkudisk");  delect(file);  }  public static  void delect(File file1){  if(file1.isDirectory()){  File[]files= file1.listFiles();  for (int i = 0; i <files.length ; i++) {  System.out.println(files[i]);  delect(files[i]);  }  file1.delete();  }else file1.delete();  } }

編寫(xiě)一個(gè)程序,從文件(文件名鍵盤(pán)輸入)得到該文件保存的10個(gè)正整數(shù),并輸出這10個(gè)整數(shù)的最大值和最小值。

參考答案(Java):

public class GetMaxMin{

public static void main(String[] args) throws Exception {

String file = new Scanner(System.in);

int i, n=10, max=0, min=0 , temp = 0;

try{

Reader in = new FileReader(file);

BufferedReader br=new BufferedReader(new InputStreamReader(in);

max=min=Integer.parseInt(br.readLine( ));

} catch ( Exception e ) {

System.out.println("文件錯(cuò)誤");

}

for ( i = 2 ; i <= n ; i ++ ) {

try {

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

temp=Integer.parseInt(br.readLine( ));

if (temp > max ) max=temp;

if (temp < min) min=temp;

}catch( IOException e ) { } ;

}

System.out.println("max="+max+"\nmin="+min);

}

}

評(píng)分標(biāo)準(zhǔn):

1、文件讀取正確可得3分

2、數(shù)據(jù)讀取方法正確可得3分

3、判斷大小正確可得2分

4、循環(huán)正確可得2分