• JAVA之IO文件读写


    IO概述:

                                                            


    IO(Input output)流

    作用:IO流用来处理设备之间的数据传输

                  Java对数据的操作是通过流的方式
                 Java用于操作流的对象都在IO包中

    流按操作数据分为两种:字节流和字符流
    流按流向分为:输入流,输出流。

    IO流常用基类
    字节流的抽象基类:
    InputStream,OutputStream.
    字符流的抽象基类:
    Reader,Writer
    注:由这四个类派生出来的子类名称都是以其父类名作为子类的后缀。
    如:InputStream的子类FileInputStream.
    如:Reader的子类FileReader。


    字符流和字节流:
    字节流两个基类:
    InputStream的子类FileInputStream.
    字符流两个基类:
    Reader Writer
    先学习一下字符流的特点。
    既然IO流式用于操作数据的,那么数据的最常见的体现形式是:文件。
    那么先以操作文件为主来演示。
    功能:在硬盘上创建一个文件并写入一些文字数据。
    import java.io.FileWriter;
    import java.io.IOException;
    
    class Filewrite_study {
        public static void main(String[] args) throws IOException {
            /*
             * 创建一个FileWriter对象。该对象一被初始化就必须要明确被操作的文件。
             * 而且该文件会被创建到指定的目录下,如果该目录下已经有同名文件将被覆盖. 其实该步就是在明确数据要存放的目的地.
             */
    
            FileWriter fw = new FileWriter("代码建立文件.txt");
    
            /*调用writer方法,将字符串写入到流中。*/
            fw.write("星云学习java文件读写!");
    
            /* 刷新流对象中的缓冲中的数据。
             * 将数据刷到目的地中*/
            fw.flush();
            fw.write("星云加油!");
    
            /*
             * 关闭流资源,但是关闭前会刷新一次内部的缓冲区中的数据 将数据刷到目的地中
             * 和flush区别:flush刷新后,流可以继续使用,close刷新后,会将流关闭
             */
            fw.close();
        }
    }

    运行截图:



                                                 

    完整的IO异常 处理方式:

    import java.io.*;
    
    class Filewrite_study
    {
          public static void main(String args[])
          {
                 FileWriter fw=null;
                 try
                 {     
                    fw=new FileWriter("d:\demo.txt");
                    fw.write("IO完整处理异常!");  
                 } 
                 //处理文件建立失败、写入文件失败异常
                 catch(IOException e)
                 {
                      System.out.println(e.toString());
                 }
                 finally
                 {
                      try
                      {
                             if(fw!=null)
                             fw.close();
                      }
                      //处理文件关闭错误异常
                      catch(IOException e)
                      {
                             System.out.println(e.toString());
                     }     
                 }
           }
    
    }

                                                            

    文件追加续写:

    /*
    演示对已有文件的数据续写。
    */
    import java.io.*;
    
    class Filewrite_study {
        public static void main(String[] args) throws IOException 
    {
            /*传递一个true参数,代表不覆盖已有的文件。
             *并在已有的文件末尾处进行数据读写。
             *java文件读写在windows环境下要换行,需要"
    "一起用*/
            FileWriter fw = new FileWriter("代码建立文件.txt",true);
            fw.write("星云学习
    java文件读写!");
            fw.close();
        }
    }



                                                  

    文件一个字符一个字符读取:


    代码如下:

    import java.io.FileReader;
    import java.io.IOException;
    class Filereader_study
    {
         public static void main(String args[])throws IOException
         {
     
              //创建一个文件读取对象,和指定名称的文件相关联。
              //要保证该文件是已经存在的,如果不存在,会发生  FileNotFoundException异常。
               FileReader fr=new FileReader("代码建立文件.txt");       
           
             //调用读取流对象的Read方法.
              while(true){
                int ch=fr.read();//读取单个字符,一个字符一个字符读。
                if(ch==-1)
                           break;
                else
                           System.out.print((char)ch);
             }
    fr.close(); } }

    上面代码优化后可以这样写:

    import java.io.FileReader;
    import java.io.IOException;
    class Filereader_study
    {
         public static void main(String args[])throws IOException
         {
     
              //创建一个文件读取对象,和指定名称的文件相关联。
              //要保证该文件是已经存在的,如果不存在,会发生  FileNotFoundException异常。
               FileReader fr=new FileReader("代码建立文件.txt");       
           
             //调用读取流对象的Read方法.
                int ch=fr.read();
                while((ch=fr.read())!=-1){
                           System.out.print((char)ch);
               }
    fr.close(); } }

     运行截图:


                                                                           

    通过字符数组进行读文件:

    /*通过字符数组进行读取*/
    
    import java.io.FileReader;
    import java.io.IOException;
    class Filereader_study
    {
         public static void main(String args[])throws IOException
         {
     
               FileReader fr=new FileReader("代码建立文件.txt");       
               
               /* 定义一个字符数组,用于存储读到的字符。
                * 该read(char[])返回的是读到的字符个数.*/
    
                char[] buf=new char[1024];
                int num=0;
                while((num=fr.read(buf))!=-1)
               {
                    /*String(char[] value, int offset, int count)
                     * 分配一个新的 String,它包含取自字符数组参数一个子数组的字符。
                     * String(buf,0,num):数组buf中从数组开始位置,偏移num位。 */
                          
                    System.out.print(new String(buf,0,num));
               }
    fr.close(); } }
  • 相关阅读:
    css优化篇
    select超全超详细总结篇
    meta总结
    富文本编辑
    textarea 换行处理
    07 DRF响应类:Response
    06 内部类
    05 序列化组件
    04 APIView的请求生命周期
    python中if __name__ == '__main__'是什么?
  • 原文地址:https://www.cnblogs.com/xingyunblog/p/3854726.html
Copyright © 2020-2023  润新知