字符流

Posted $joke

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了字符流相关的知识,希望对你有一定的参考价值。

    字符流:
 1.1Reader/Write(字符流的输入和输出流,相对于java文件而言)
 1.2能够用TXT编辑器打开的文件,且不乱码就是字符文件可以用字符流来操作
  而不能打开的文件,则是字节文件。
 2.输入流Reader类(抽象类)
  2.1常用方法

    int read();  //读取单个字符

    int read(byte [] c)  //返回实际读取的字符数

    int read(char[] c,int off,int len)    

    void colse()    //关闭流

  2.2FileReader类(是Reader的子类)

  2.2.1 读取方法:File f=new File("文件路径");

            Reader fr=new FileReader("文件路径"/f);

    示例:

    Reader fr=null;
      StringBuffer sbf=null;
            try {
           fr=new FileReader("D:\\Test\\test.txt");
           sbf=new StringBuffer();
           int length;
           while((length=fr.read())!=-1){
            char c=(char)length;
            sbf.append(c);
       }
         System.out.println(sbf.toString()); //输出数据
        } catch (FileNotFoundException e) {
         // TODO Auto-generated catch block
         e.printStackTrace();
  }   catch (IOException e) {
       // TODO Auto-generated catch block
         e.printStackTrace();
        }finally{
           if(fr!=null){
            try {
           fr.close();
          } catch (IOException e) {
         // TODO Auto-generated catch block
             e.printStackTrace();
      }
       }
      }

  2.3字符输入流(BufferedReader类)

    2.3.1:优势:提高了读取文件的效率。

    2.3.2:创建对象:

      Reader fr=new FileReader("文件路径(相对或绝对路径)");

      BufferedReader br=new BufferedReader(fr);或BufferedReader br=new BufferedReader(new FileReader(“文件路径(相对或绝对路径)”));  

    2.3.3:   br.readerLine();    读取一行数据

    示例:

        Reader fr=null;
        BufferedReader br=null;
        try {
         //先创建一个FileReader对象
         fr=new FileReader("D:\\Test\\test.txt");
   
         //在创建一个BufferedReader对象
         br=new BufferedReader(fr);
   
         //读取每一行数据
         String line=br.readLine();
         while(line!=null){
            System.out.println(line);
          line=br.readLine();//再次赋值进行判断
           }
        } catch (FileNotFoundException e) {
           // TODO Auto-generated catch block
           e.printStackTrace();
      } catch (IOException e) {
       // TODO Auto-generated catch block
       e.printStackTrace();
        }finally{
           try {
        br.close(); //先关
        fr.close();
         } catch (IOException e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
             }
            }

3.字符输出流Writer类

    3.1常用方法:

      write(String s);      将str字符串里包含的字符输出到指定的输出流中

      write(String s,int off,int len)

      void close()    关闭输出流

      void flush()    刷新输出流

    3.2FilerWrite(是write的子类)

    3.3读取方法:

      Writer fr=new FileWriter("文件路径");

    示例:

    Writer fw=null;
  
       try {
       //创建一个FileWrite对象
         fw=new FileWriter("D:\\Test\\简介.txt");
   
       //写入信息
         fw.write("我热爱我的团队!"+"\r\n");
         fw.write("张三"+"\r\n");  //\r\n进行换行
         fw.write("18岁");
         fw.flush();  //刷新缓冲区
        } catch (IOException e) {
       // TODO Auto-generated catch block
       e.printStackTrace();
          }finally{
           try {
            fw.close();
         } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
       }
        }

    3.4:字符输出流BufferedWrite类  

      3.4.1:创建对象:

        BufferdWriter bw=new BufferedWriter(new FileWrite(“文件路径”))  

 

    示例:

    Writer fw=null;
      BufferedWriter bw=null;
  
        try {
           fw=new FileWriter("D:\\Test\\hello.txt");
   
             bw=new BufferedWriter (fw);
   
           //写入信息
         bw.write("大家好");
         bw.write("我正在学习BufferedWriter。");
         bw.newLine();  //换行
         bw.write("请多多指教!");
         bw.flush();  //刷新缓冲区
         bw.close();  //关闭流
         System.out.println("成功插入数据!");
   
         //读取文件内容
         FileReader fr=new FileReader("D:\\Test\\hello.txt");
         StringBuffer sbf=new StringBuffer();
         int length;
         while((length=fr.read())!=-1){
          char c=(char)length;
          sbf.append(c);
         }
       System.out.println(sbf.toString());
      } catch (IOException e) {
       // TODO Auto-generated catch block
         e.printStackTrace();
        }

以上是关于字符流的主要内容,如果未能解决你的问题,请参考以下文章

JavaSE基础九----<IO流 >字符流,字符缓冲流

Java学习笔记6.2.2 字符流 - 字节字符转换流

Java学习笔记6.2.2 字符流 - 字节字符转换流

IO流25 - 字符流 - 字符输出流的缓冲流以及字符输入流的缓冲流BufferedWriter和BufferedReader

字节流 字符流 输入流 输出流

字节流 字符流 输入流 输出流