<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Day24-C:\Users\Lenovo\Desktop\note\code\JavaSE\Basic\src\com\InOut

      字符流

      適合讀寫文本文件的內容

      FileReader

      把文件(磁盤或網絡)中的數據以字符的形式讀取到內存中

      image-20251025192439555

      package Basic.src.com.InOut.FileReaderWriter;
      
      import java.io.FileNotFoundException;
      import java.io.FileReader;
      import java.io.Reader;
      
      public class FileReaderTest1 {
          public static void main(String[] args) throws Exception {
              try (
                      //創建一個文件字符輸入流管道與源文件接通
                   Reader fr = new FileReader("Basic\\src\\com\\InOut\\FileReaderWriter\\itheima01.txt");
                   ){
      //            //2、讀取文本文件的內容
      //            int c;
      //            while ((c = fr.read()) != -1) {//read返回的是int
      //                System.out.print((char)c);
      //            }
                  //3、每次讀取多個字符
                  char[] buffer = new char[3];
                  int len;
                  while((len = fr.read(buffer))!= -1) {
                      String str = new String(buffer, 0, len);
                      System.out.print(str);
                  }
                  //性能是比較不錯的!
              } catch (Exception e) {
                  e.printStackTrace();;
              }
          }
      }
      

      FileWriter

      字符輸出流寫出數據之后,必須刷新流或者關閉流,寫出去的數據才能生效

      image-20251027144838330

      package Basic.src.com.InOut.FileReaderWriter;
      
      import java.io.FileWriter;
      import java.io.IOException;
      import java.io.Writer;
      
      public class FileWriterTest2 {
          public static void main(String[] args) throws IOException {
              try (
                      //0、創建一個文字字符輸出流管道與目標文件接通
                      //Writer fw = new FileWriter("Basic/src/itheima02out.txt");//是覆蓋管道
                      Writer fw = new FileWriter("Basic/src/itheima02out.txt",true);//是追加管道
                      ){
                  //1、寫一個字符出去
                  fw.write('a');
                  fw.write(97);
                  fw.write('磊');//寫一個字符出去
                  fw.write("\r\n");//換行
      
                  //2、寫一個字符串出去
                  fw.write("我愛你中國abc");
                  fw.write("\r\n");//換行
      
                  //3、寫字符串的一部分出去
                  fw.write("我愛你中國abc",0,5);
                  fw.write("\r\n");//換行
      
                  //4、寫一個字符數組出去
                  char[] buffer = {'黑','馬','a','b','c'};
                  fw.write(buffer);
                  fw.write("\r\n");//換行
      
                  //5、寫字符數組的一部分出去
                  fw.write(buffer,0,2);
              } catch (IOException e) {
                  throw new RuntimeException(e);
              }
      
      
          }
      }
      
      package Basic.src.com.InOut.FileReaderWriter;
      
      import java.io.FileWriter;
      import java.io.IOException;
      import java.io.Writer;
      
      public class FileWriterTest3 {
          public static void main(String[] args) throws IOException {
              Writer fw = new FileWriter("Basic/src/itheima03out.txt" );
      
              //字符輸出流寫出數據之后,必須刷新流或者關閉流,寫出去的數據才能生效
              //字符輸出流運行時會在內存里面新建一個緩沖區,直到數據拷貝結束后再將緩沖區內數據一次性寫到文件中去
              // 但是仍然會創造這個文件出來
              //寫字符數據出去
              fw.write('a');
              fw.write('b');
              fw.write('c');
              fw.write('d');
              fw.write("\r\n");
      
              fw.write("我愛你中國");
              fw.write("\r\n");
              fw.write("我愛你中國");
      
      //        fw.flush();//刷新流,刷新完會將緩沖區的數據同步到文件中
      //        fw.write("張三");
      //        fw.flush();
      
              fw.close();//關閉流包含刷新操作,但后續無法繼續使用
          }
      }
      

      緩沖流

      對原始流進行包裝,以提高原始流讀寫數據的性能

      image-20251027152113433

      在內存區創建一個緩存區(8KB),直接從內存中讀取

      image-20251027152619201

      package Basic.src.com.InOut.BufferStream;
      
      import java.io.*;
      
      public class BufferedInputStreamTest1 {
          public static void main(String[] args) throws IOException {
              try (
                      InputStream is = new FileInputStream("Basic/src/itheima01.txt");
                      //1.定義一個字節緩沖輸入流
                      InputStream bis = new BufferedInputStream(is);
                   OutputStream os = new FileOutputStream("Basic/src/itheima01_bak.txt");
                   //2.定義一個字節緩沖輸出流包裝原始的字節流
                      OutputStream bos = new BufferedOutputStream(os,8192*2);
                   ){
                  byte[] buffer = new byte[1024];
                  int len;
                  while ((len = bis.read(buffer)) != -1) {
                      bos.write(buffer, 0, len);
                  }
                  System.out.println("復制完成");
              } catch (FileNotFoundException e) {
                  throw new RuntimeException(e);
              }
          }
      }
      

      image-20251027161016236

      package Basic.src.com.InOut.BufferStream;
      
      import java.io.BufferedReader;
      import java.io.FileReader;
      import java.io.IOException;
      import java.io.Reader;
      
      public class BufferedReaderTest2 {
          public static void main(String[] args) throws IOException {
              try (
                      Reader fr = new FileReader("Basic/src/itheima04.txt");
                      //創建一個字符緩存輸入流包裝原本的輸入流
                      BufferedReader bfr  = new BufferedReader(fr);
                      ){
      //            char[] buffer = new char[3];
      //            int len;
      //            while ((len = bfr.read(buffer)) != -1) {
      //                System.out.print(new String(buffer,0,len));
      //            }
      //            System.out.println(bfr.readLine());
      //            System.out.println(bfr.readLine());
      //            System.out.println(bfr.readLine());
      //            System.out.println(bfr.readLine());//null
                  String line;
                  while ((line = bfr.readLine()) != null) {
                      System.out.println(line);
                  }
      
      
              } catch (IOException e) {
                 e.printStackTrace();
              }
          }
      }
      

      image-20251027174104600

      字節數組理論上越大越好,但是一定程度之后就不明顯,且有可能占用太多內存,一般32KB是巔峰

      如果代碼編碼和被讀取的文件編碼不一致,使用字符流讀取文件時就會出現亂碼

      字符輸入轉換流

      image-20251027182233278

      image-20251027182420935

      package Basic.src.com.InOut.BufferStream;
      
      import java.io.*;
      
      public class Test2 {
          public static void main(String[] args) throws IOException
          {
      
              try (
                      //1.得到文件的原始字節流(GBK形式)
                      InputStream is = new FileInputStream("Basic\\src\\itheima06.txt");
                      //2.把原始的字節輸入流按照指定的字符集編碼轉換成字符輸入流
                      Reader isr = new InputStreamReader(is,"GBK");
                      //3.把字符輸入流包裝成緩沖字符輸入流
                      BufferedReader br = new BufferedReader(isr)
              ){
                  String line;
                  while ((line = br.readLine()) != null)
                  {
                      System.out.println(line);
                  }
      
              } catch (FileNotFoundException e) {
                  throw new RuntimeException(e);
              }
          }
      }
      

      image-20251027183555362

      package Basic.src.com.InOut.BufferStream;
      
      import java.io.*;
      
      public class OutputStreamReaderTest3 {
          /*
          掌握字符輸出轉換流
           */
          public static void main(String[] args) throws IOException {
              try (
                      //指定寫出去的字符編碼
                      //1.創建一個文件字節輸出流
                      OutputStream os = new FileOutputStream("Basic/src/itheima07Out.txt");
                      //2.把原始的字節輸出流按照指定的字符集編碼輸出轉換流
                      Writer osw = new OutputStreamWriter(os,"GBK");
                      //把字符輸出流再包裝成緩沖字符流
                      BufferedWriter bw = new BufferedWriter(osw);
                      ){
                  bw.write("我是中國人abc");
                  bw.write("我愛你中國123");
              } catch (FileNotFoundException e) {
                  e.printStackTrace();
              }
          }
      }
      

      打印流

      image-20251027184618095

      打印流實現更方便更高效的方法,能實現打印啥出去就是啥出去

      image-20251027184908160

      package Basic.src.com.InOut.PrintStream;
      
      import java.io.FileNotFoundException;
      import java.io.PrintStream;
      import java.io.UnsupportedEncodingException;
      
      public class PrintTest1 {
          public static void main(String[] args) throws UnsupportedEncodingException {
              try (
                      //1.創建一個打印流管道
                      PrintStream ps = new PrintStream("Basic/src/itheima08.txt","GBK");
                      ){
                  ps.print(97);//打印后自動換行
                  ps.print('a');
                  ps.print("我愛你中國abc");
                  ps.print(true);
                  ps.print(99.5);
      
                  ps.write(97);//a
              } catch (FileNotFoundException e) {
                  throw new RuntimeException(e);
              }
          }
      }
      

      image-20251027190433070

      重定向

      package Basic.src.com.InOut.PrintStream;
      
      import java.io.FileNotFoundException;
      import java.io.PrintStream;
      
      public class PrintTest2 {
          public static void main(String[] args) {
      
              try(
                      PrintStream ps = new PrintStream("Basic/src/itheima09.txt");
                      ) {
                  System.setOut(ps);//重定向
                  System.out.println("老驥伏櫪");
                  System.out.println("志在千里");
              } catch (FileNotFoundException e) {
                  e.printStackTrace();
              }
      
          }
      }
      

      數據流

      image-20251027191047266

      package Basic.src.com.InOut.DataStream;
      
      import java.io.DataOutputStream;
      import java.io.FileNotFoundException;
      import java.io.FileOutputStream;
      import java.io.IOException;
      
      public class DataOutputStreamTest1 {
          public static void main(String[] args) throws IOException {
              try (
                      //1.創建一個數據輸出流包裝低級的字節輸出流
                      DataOutputStream dos = new DataOutputStream(new FileOutputStream("Basic/src/itheima10out.txt"));
                      //輸出的還包含了編碼類型,沒辦法直接讀取,可以通過DataInputStream讀取
                      ){
                 dos.writeInt(97);
                 dos.writeDouble(99.5);
                 dos.writeBoolean(true);
                 dos.writeUTF("黑馬程序員666!");
              } catch (FileNotFoundException e) {
                  throw new RuntimeException(e);
              }
          }
      }
      

      image-20251027191938033

      package Basic.src.com.InOut.DataStream;
      
      import java.io.*;
      
      /*
      使用數據輸入流讀取特定類型的數據
       */
      public class DataInputStreamTest2 {
          public static void main(String[] args) throws IOException {
              try (
                      DataInputStream dis = new DataInputStream(new FileInputStream("Basic/src/itheima10out.txt"));
                      ){
                  int i = dis.readInt();
                  System.out.println(i);
                  
                  double d = dis.readDouble();
                  System.out.println(d);
      
                  boolean b = dis.readBoolean();
                  System.out.println(b);
                  
                  String rs = dis.readUTF();
                  System.out.println(rs);
      
              } catch (FileNotFoundException e) {
                  e.printStackTrace();
              }
          }
      }
      

      序列化流

      對象序列化:把Java對象寫入到文件當中去

      對象反序列化:把文件的Java對象讀出來

      image-20251027193028817

      package Basic.src.com.InOut.ObjectStream;
      
      import java.io.FileOutputStream;
      import java.io.IOException;
      import java.io.ObjectOutputStream;
      
      /*
      目標:掌握對象字節輸出流的使用:序列化對象
       */
      public class Test1ObjectOutputStream {
          public static void main(String[] args) {
              try(
                      //2.創建一個對象字節輸出流包裝原始的字節輸出流
                      ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("Basic/src/itheima11out.txt"));
                      ) {
                  //1.創建一個java對象
                  User u= new User("admin","張三",32,"6156321");
                  //3.序列化對象到文件在去
                  //對象如果需要序列化,必須實現序列化接口implements Serializable是序列化的前提
                  //存入之后無法直接讀取
                  oos.writeObject(u);
                  System.out.println("序列化對象成功!");
              } catch (IOException e) {
                  throw new RuntimeException(e);
              }
          }
      }
      

      image-20251027194423879

      package Basic.src.com.InOut.ObjectStream;
      
      import java.io.FileInputStream;
      import java.io.IOException;
      import java.io.ObjectInputStream;
      
      public class Test2ObjectInputStream {
          public static void main(String[] args) throws ClassNotFoundException {
              try(
                      //1.創建一個對象字節輸入流管道,包裝低級的字節輸入流與源文件接通
                      ObjectInputStream ois = new ObjectInputStream(new FileInputStream("Basic/src/itheima11out.txt"));
                      ) {
                  User u = (User) ois.readObject();
                  System.out.println(u);
                  //private transient String password;//加上transient之后,這個變量將不參與序列化
                  //User{loginName='admin', userName='張三', age=32, password='null'}
              } catch (IOException e) {
                  throw new RuntimeException(e);
              }
          }
      }
      

      可以將多個對象存儲到ArrayList中去,然后直接對集合進行序列化即可

      ArrayList已經實現了序列化接口

      框架

      框架的形式:一般是把類、接口等編譯為class形式,再壓縮成一個jar結尾的文件發行出去。

      image-20251027200159305

      package Basic.src.com.libTest;
      
      import org.apache.commons.io.FileUtils;
      
      import java.io.File;
      import java.io.IOException;
      import java.nio.file.Files;
      import java.nio.file.Path;
      
      public class CommonIOTest1 {
          public static void main(String[] args) throws IOException {
              FileUtils.copyFile(new File("Basic/src/itheima01.txt"),new File("Basic/src/a.txt"));
              FileUtils.copyDirectory(new File("F:\\碩士階段\\Java\\測試文件夾"),new File("F:\\碩士階段\\Java\\測試文件夾(存儲用)"));
              FileUtils.deleteDirectory(new File("F:\\碩士階段\\Java\\測試文件夾()存儲用"));//可以刪除非空文件夾
      
              //Files.copy(Path.of("Basic\\src\\itheima01.txt"),Path.of("Basic\\src\\b.txt"))在java11中出現
              //System.out.println(Files.readString(Path.of("C:\\Users\\Lenovo\\Desktop\\note\\code\\JavaSE\\Basic\\src\\itheima01.txt")));//也是java11
          }
      }
      
      posted @ 2025-10-27 20:35  David大胃  閱讀(5)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 国产精品日韩中文字幕| 精品国产一区二区亚洲人| 一本无码人妻在中文字幕免费| 一区二区中文字幕久久| AV无码免费不卡在线观看| 国偷自产一区二区三区在线视频| 萨嘎县| 91热在线精品国产一区| 樱花草视频www日本韩国| 国产精品99久久久久久董美香 | 国产成人亚洲综合91精品| 日韩av中文字幕有码| 可以直接看的无码av| 国产熟女一区二区三区四区| 宫西光有码视频中文字幕| 久久久久人妻精品一区三寸| 奇米影视7777久久精品| 99久久国产综合精品女图图等你 | 国产精品不卡一区二区久久| 国产欧美精品一区二区三区-老狼 真实单亲乱l仑对白视频 | 国产av中文字幕精品| 99视频偷窥在线精品国自产拍| 亚洲 日韩 国产 制服 在线| 99久久国产一区二区三区| 香蕉亚洲欧洲在线一区| 一区二区在线观看成人午夜| 日本精品不卡一二三区| 国产片AV国语在线观看手机版| 久久久久蜜桃精品成人片公司| 精品视频在线观看免费观看| 中文有无人妻vs无码人妻激烈| 国产自拍在线一区二区三区| 成人片黄网站色大片免费| 国产日韩综合av在线| 久久精品国产福利一区二区| 久久精品久久电影免费理论片| 亚洲区欧美区综合区自拍区| 欧美日本中文| 扒开粉嫩的小缝隙喷白浆视频| 四虎国产精品成人免费久久| 久久精品中文字幕少妇|