Java之IO流

IO流及其概述和分類

一:IO流用來處理數據之間的傳輸,Java對數組的數據是用流的方式,Java用於操做流在IO包中 二:流能夠分爲輸入流,和輸出流數組

三:操做類型能夠分爲:①字節流字節流能夠操做任何數據,由於計算機中任何數據都是以字節存在的 ②:字符流能夠操做存在的字符流,這樣比較方便緩存

四:IO流的分類 ①InputStream ②OutputStream 字符流的抽象對象 Reader Writerbash

五:IO程序的書寫 ①使用前,導IO包 ②使用時進行IO異常處理 ③使用後釋放資源spa

//建立輸入流對象
        FileInputStream fs=new FileInputStream(「bb.txt」);
        int b;
        //讀流的過程
        while((b=fs.read())!=-1){
            System.out.print(b);
        }
        //切記要記得關流
        fs.close();
複製代碼

爲啥要用int值去接受code

由於輸入流能夠操做任意文件,包括圖片,音頻等,這些文件都是已二進制形式存儲在,若是每一次讀取文件都是返回的11111111,是-1的補碼就會中止不讀了,後面的數據讀不到,因此就用int數據去接受。cdn

數組拷貝available方法

//在開發中不推薦使用
//建立輸入輸出對象
  FileInputStream fis=new FileInputStream("E\\a.txt");
  FileOutputStream fos=new FileOutputStream("E:\\b.txt");
 //把要讀取的數據放在數組中
 byte by= new byte[fis.available];
 //讀文件
 fis.read(by);
 //寫文件
 fos.write(by);
   fis.close();
   fos.close();
複製代碼

建立字節緩存流

//建立字符緩衝流
BufferedInputStream bri=new BufferedInputStream(new FileInputStream("aa.txt"));
BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream("bb.txt"));
int c;
while((c=bri.read())!=-1){
    bos.write(c);
}
bri.close();
bos.close();
複製代碼

close和flush的刷新的區別

//close具備刷新功能,在關閉流以前,就會先刷新一次緩衝區,將緩衝區字節所有都刷新在緩衝區上,在關閉close刷完後不能寫了
 flush方法?
 具有刷新功能,刷完後還能夠繼續寫
  FileInputStream filei = new FileInputStream("E:\\rec.avi");
        //建立輸出流對象
        FileOutputStream fileo = new FileOutputStream("E:\\copy1.avi");
         byte arr[]=new byte[1024*8];
         int len;
         while ((len=filei.read(arr))!=-1){
             fileo.write(arr);
         }
         //close具備刷新功能,在關閉流以前,就會先刷新一次緩衝區,將緩衝區字節所有都刷新在緩衝區上,在關閉
         filei.close();
         fileo.close();
複製代碼

練習

在控制檯輸入文件路徑,  將文件拷貝到當前目錄下
複製代碼
public static void main(String [] args){
//建立字符緩衝區
   BufferedInputStream bis=new BufferedInputStream(new FileInputStream(getFile()));
BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream(getFile().getName()));
int b;
while((b=bis.read())!=-1){
    bos.write(b);
}
bis.close();
bos.close();
//用getFile方法區封裝要獲取的路勁
public static File getFile(){
    Scanner sc=new Scanner(System.in);
System.out.print("重鍵盤上輸入路徑");
    while(true){
        String line=sc.nextLine();
        File dir=new File(line);
        //增長程序的魯邦性
        if(!dir.exists()){
            System.out.print("你輸入的路徑不存在");
        }else if(dir.isDirectory){
            System.out.print("你輸入文件目錄,請從新輸入");
        }else{
            retrun file;
        }
        }
    }
} 
}
複製代碼
相關文章
相關標籤/搜索