黑马程序员---java IO-字符流 学习笔记

---------------------- android培训、 java培训、期待与您交流! ----------------------

IO:

1.       IO流的概念: IO流用来处理设备之间的数据传输, Java对数据的操作是通过流的方式, 用于操作流的类都在IO包中, 流按流向分为两种:输入流,输出流;

IO程序书写:

<1>.使用前, 导入IO包中的类;

<2>.使用时, 进行IO异常处理;

<3>.使用后释放资源;

2.       流按操作类型分为两种: 字节流与字符流。  字节流可以操作任何数据,字符流只能操作纯字符数据,比较方便;

字符流:

<1>.单个字符读取文件: FileReader

                            创建输入流, 关联文件

           FileReader fr = new FileReader("file.txt");

               读取一个字符, 判断是否是流末尾,返回-1;

           int ch;

           while((ch = fr.read()) != -1)

              如果不是流末尾就转为字符串打印;

              System.out.println((char)ch);

               释放资源;

           fr.close();

       <2>写出文件: FileWriter

              创建字符输出流,如果文件存在就直接关联并清空内容,如果不存在就创建新文件;

           FileWriter fw = new FileWriter("dest.txt");

               输出字符;

           fw.write();

               关闭输出流, 注意: 只有关闭输出流才能写出;

           fw.close();

        <3>注意事项:

          (1)文件路径:

定义文件路径时Windows中的目录符号为“\”,但这个符号在Java中是特殊字符,需要转义, 可以用“\\”或“/”表示;

                   (2)读取文件

                            读取文件时必须保证文件存在,否则将抛出FileNotFoundException

           (3)写出文件:

           写出时文件如不存在时程序会创建新文件,如文件已存在则会清空原文件内容重新写入, 如需追加内容可调用FileWriter构造函数FileWriter(String fileName, boolean append);

          <4>文件拷贝:

<4>拷贝文件:

                     (1)FileReader 和FileWriter                 逐个字符拷贝,如上面的输入输出结合;

                 (2)FileReader 和 FileWrite                  自定义数组(缓冲区)拷贝;

                       原理: 定义一个数组, 然后调用FileReader读取一个数组;

               FileReader fr = new FileReader("file.txt");

               FileWriter fw = new FileWriter("dest.txt");

               定义一个字符数组, 当做缓冲区;

               char[] buffer = new char[1024];

               定义一个变量,用来记住每次读到多少个字符;

               int len;

               一次读取一批字符,记住读到多少个,判断是否到达流末尾;

               while((len = fr.read(buffer)) != -1)

                  如果到达流末尾就将文件写出(0---len);

                  fe.writer(buffer, 0, len);

               释放资源;

               fr.close();

               fw.close();

          (3)BufferedReader 和BufferedWriter  内置缓冲区逐个拷贝;

             原理:从字符输入流中读取文本, 缓冲各个字符,从而实现字符;

               创建带缓冲功能的字符输入流

               BufferedReader br = new BufferedReader(new FileReader("file.txt"));

               创建带缓冲功能的字符输出流

               BufferedWriter bw = new BufferedReader(new FileWriter("dest.txt"));

               读取一个字符, 判断是否是流末尾,返回-1;

int ch;

               while((ch = br.read()) != -1)

                  fw.write((char)ch);

              关闭资源

               fr.close();

               fw.close();

          (4)BufferedReader 和 BufferedWriter  逐行拷贝;

              原理:读取一个文本,通过字符,换行("\n"),回车("\r")或回车后直接跟着换行,即可认为某行已终止;

                  包含该行内容的字符串,不包含任何终止符,如果已到达流末尾则返回null;

               BufferedReader br = new BufferedReader(new FileReader("file.txt"));

               BufferedWriter bw = new BufferedWriter(new FileWriter("dest.txt"));

               String len;

               读取一行;

               while((len = br.readLine()) != null)

                  读到一行就写出一行;

                  bw.write(len);

               释放资源;

               br.close();

               bw.close();

---------------------- android培训、 java培训、期待与您交流! ----------------------

你可能感兴趣的:(黑马程序员---java IO-字符流 学习笔记)