1. 程式人生 > 其它 >java--IO--FileInputStream和FileOutputStream

java--IO--FileInputStream和FileOutputStream

  1. FileInputStream的:檔案位元組輸入流(InputStream的子類)
    1. FileInputStream的方法:
    2. FileInputStream的例項:

      1. package com.model.io.inputstream.fileinputstream;
        
        import org.junit.Test;
        
        import java.beans.Transient;
        import java.io.File;
        import java.io.FileInputStream;
        import java.io.FileNotFoundException;
        import java.io.IOException;
        
        
        /** * @Description:測試類 * @Author: 張紫韓 * @Crete 2021/6/18 11:28 */ public class FileInputStreamDemo01 { /**演示:檔案位元組輸入流:FileInputStream * * 單個位元組讀效率比較低,且讀取文字檔案會發生亂碼問題, * (一個漢字三個位元組 ,一次只讀取一個位元組,只讀取了漢字的三分之一就輸出所以會發生亂碼錯誤) * */ @Test public void read01() throws IOException {
        //1.建立檔案物件 File file = new File("D:\\qq\\IDEA\\IdeaProjects\\java_mianshi_test\\mianshi_io\\src\\main\\resources\\aa.txt"); //2.建立讀取檔案的物件 FileInputStream fileInputStream=null; //3.宣告接受讀取資訊的變數 int readDate=0; try { //4.向檔案位元組輸入流物件傳入讀取的檔案 fileInputStream=new
        FileInputStream(file); //5.將檔案讀取物件的值賦給檔案資訊接受變數,當讀取的為 -1 時說明檔案內容已經全部讀取,否則還需要繼續讀取 while((readDate=fileInputStream.read())!=-1){ System.out.print((char) readDate);//將讀取的位元組資訊轉換為字元,輸出到控制檯 } } catch (FileNotFoundException e) { e.printStackTrace(); }finally { //6.關閉位元組讀取物件 try { fileInputStream.close(); } catch (IOException e) { e.printStackTrace(); } } } @Test public void read02() throws IOException { //1.建立要讀取的檔案 File file = new File("D:\\qq\\IDEA\\IdeaProjects\\java_mianshi_test\\mianshi_io\\src\\main\\resources\\aa.txt"); //2.建立一個一次讀取後返回的讀取個數 int readCount=0; //3.宣告一次讀取後,裝載資料的容器 byte[] buff=new byte[8]; //4.宣告讀取資料的物件 FileInputStream fileInputStream=null; try { //5.將需要讀取檔案傳入到位元組輸入流物件中 fileInputStream = new FileInputStream(file); //6.每次讀取都會讀取8個位元組的資料,且放在buff中,readCount是真實讀取的個數 while ((readCount=fileInputStream.read(buff))!=-1){ //7.將讀取的buff位元組陣列轉換成字串輸出 System.out.println(new String(buff, 0, readCount)); } } catch (IOException e) { e.printStackTrace(); }finally { //8.關閉位元組輸入流物件 fileInputStream.close(); } } }
  2. FileOutputStream:檔案位元組輸出流(是OutputStream的子類)

    1. 常見的方法:  

    2. FileOutputStream的例項:
      1. package com.model.io.outputstream.fileoutputstream;
        
        import org.junit.Test;
        
        import java.io.FileNotFoundException;
        import java.io.FileOutputStream;
        import java.io.IOException;
        
        /**
         * @Description:測試類
         * @Author: 張紫韓
         * @Crete 2021/6/18 13:55
         */
        public class FileOutPutStreamDemo01 {
            /**
             * 演示FileOutputStream,將資料寫入到磁碟中的某個檔案
             * 如果磁碟中的這個檔案不存在,則建立檔案
             * */
            @Test
            public void write() throws IOException {
                //1.宣告寫入檔案的路徑
                String filePath="D:\\qq\\IDEA\\IdeaProjects\\java_mianshi_test\\mianshi_io\\src\\main\\resources\\OutputStream\\FileOutputStream.txt";
                //2.宣告寫入位元組物件
                FileOutputStream fileOutputStream=null;
                try {
                    //3.將檔案的路徑傳入給寫入位元組物件
        //           fileOutputStream = new FileOutputStream(filePath); //第一種是替換的
                    fileOutputStream=new FileOutputStream(filePath,true); //追加的方式新增到檔案中
        
                    //4.寫入位元組物件呼叫write,向檔案中寫入資料
        //          fileOutputStream.write('a');  //第一種只寫入一個字元
                    String str="hello,word!";
        
        //          fileOutputStream.write(str.getBytes());  //第二中寫入的是一個位元組陣列,將字串轉為位元組陣列寫入到檔案中
                    fileOutputStream.write(str.getBytes(), 0, str.length()); //寫入的位元組陣列指定起始位置和長度
                } catch (FileNotFoundException e) {
                    e.printStackTrace();
                }finally {
                    //5.關閉資源
                    fileOutputStream.close();
                }
        
        
            }
        }
  3. 完成檔案的拷貝
    1. package com.model.io;
      
      import java.io.*;
      
      /**
       * @Description:測試類
       * @Author: 張紫韓
       * @Crete 2021/6/18 14:50
       */
      public class CopyDemo01 {
          /**
           * 完成檔案的拷貝,將D:\qq\IDEA\IdeaProjects\java_mianshi_test\mianshi_io\src\main\resources\a.jpg
           * 檔案拷貝到D:\qq\IDEA\IdeaProjects\java_mianshi_test\mianshi_io\src\main\resources\File 目錄下
           *
           * */
          public static void main(String[] args) throws IOException {
              File fileFrom = new File("D:\\qq\\IDEA\\IdeaProjects\\java_mianshi_test\\mianshi_io\\src\\main\\resources\\a.jpg");
      
              String fileTo="D:\\qq\\IDEA\\IdeaProjects\\java_mianshi_test\\mianshi_io\\src\\main\\resources\\File\\"+fileFrom.getName();
      
               //1.先讀取到檔案
              FileInputStream fileInputStream=null;
              byte[] buff = new byte[1024];
              int readCount=0;
              FileOutputStream fileOutputStream=null;
              try {
                  fileInputStream=new FileInputStream(fileFrom);
                  fileOutputStream=new FileOutputStream(fileTo,true);
                  while((readCount=fileInputStream.read(buff))!=-1){
                      //2.再將檔案寫入到指定的目錄下
                      fileOutputStream.write(buff,0,readCount);
                  }
                  System.out.println(fileFrom.getName()+"拷貝成功!");
      
              } catch (FileNotFoundException e) {
                  e.printStackTrace();
              }finally {
                  if (fileOutputStream!=null) {
                      fileOutputStream.close();
                  }
                  if (fileOutputStream!=null) {
                      fileInputStream.close();
                  }
              }
      
          }
      }