zoukankan      html  css  js  c++  java
  • JAVA流和File类常用总结

    流和File类常用总结

    --------------------------------------------------------------------------------------------------

    常用实例:
    一、PrintWriter输出文件:
    package t;


    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.FileWriter;
    import java.io.PrintWriter;


    public class file {
      public static void main(String[] args) throws Exception {
    File f=new File("src/text.txt");
    PrintWriter pw=new PrintWriter(f);
    pw.write("test");
    pw.println("hang1");
    pw.print("buhuan");
    pw.println("hang2");
    pw.flush();
    pw.close();
    }
    }


    二、BufferedReader读取文件:
    package t;


    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileReader;


    public class printwriter {
      public static void main(String[] args) throws Exception {
    File f=new File("src/text.txt");
    FileReader fw=new FileReader(f);
    BufferedReader br=new BufferedReader(fw);
    String str=null;
    while((str=br.readLine())!=null){
     System.out.println(str);
    }
    br.close();
      }
    }


    三、File类
            当对路径: 
            File f=new File("text.txt");       到当前项目文件夹下;
            "src/text.txt"或"src\text.txt";  到项目下的src文件夹下;
     
            绝对路径:
            "E:/tt/t.txt"或"E:\tt\t.txt";   如果没有该目录,在写文件时会报错
    --------------------------------------------------------------------------------------------------
    常用知识点:




    一、常用到的字节输入流和输出流
          in:输入流
                1. ByteArrayInputStream:    读取byte类型的数组中的数据
                2. FileInputStream:         从文件中读取数据;
                3. PipedInputStream:        (管道流)连接一个  PipedOutputStream;
                4. ObjectInputStream:       对象输入流;
                5. StringBufferInputStream: 可以读取一个字符串,在API中已经过时
     
          out: 输出流
                6.ByteArrayOutputStream:
                7.FileOutputStream
                8.PipedoutputStream:
                9.ObjectoutputStream(序列化)



    二、常用到的字符输入流和输出流
               Reader:输入流  
       CharArrayReader        : 把字符数组转换为Reader,从字符数组中读取字符;
      *FileReader                  : 从文件中读取字符;
      *BufferedReader          : 过滤器,为其他Reader提供读缓冲区,此外,它的readLine()方法能够读入一行字符串;//常用
        StringReader              : 把字符串转换为Reader,从字符串中读取字符;           
        PipedReader              : 连接一个PipedWriter;          
       *InputStreamReader    : 过滤器,把InputStream转换为Reader,可以指定字符编码;
        PushBackReader       : 能把读到的字符压回到缓冲区中,通常用做编译器的扫描器,在程序中一般很少使用它。

               Writer:输出流
      *PrintWriter
       FileWriter
      *OutputStreamWriter
     

      
    三、FileInputStream 和 FileOutputStream
     
           1. 当创建一个FileInputStream对象的时候,文件必须存在以及是可读的
            FileInputStream(File file)
            FileInputStream(String name)
           2.  当创建一个FileOutputStream对象的时候,可以创建一个新的文件,也可以覆盖一个已经存在的同名文件。如果要创建的文件已经存在,可以选择向旧文件添加新的内容(append为true)或者新的内容覆盖旧文件的内容(append为false)。
          FileOutputStream(File file)
          FileOutputStream(File file, boolean append)
          
          FileOutputStream(String name)
          FileOutputStream(String name, boolean append)
       
    四、*InputStreamReader 和 OutputStreamWriter 
                包装流。
                *InputStreamReader类把InputStream类型转换为Reader类型
                *OutputStreamWriter类把OutputStream类型转换为Writer类型
    构造方法:
                . InputStreamReader(InputStream in): 按照本地平台的字符编码读取输入流中的字符;
                . InputStreamReader(InputStream in, String charsetName): 按照指定的字符编码读取输入流中的字符; 
                . OutputStreamWriter(OutputStream out): 创建使用默认字符编码的 OutputStreamWriter;
                . OutputStreamWriter(OutputStream out, String charsetName): 创建使用指定字符集的 OutputStreamWriter。  

    五、FileReader和FileWriter
                InputStreamReader的一个子类,用于从文件中读取字符数据。该类只能按照本地平台的字符编码来读取数据,用户不能指定其他字符编码类型。


                . FileReader(File file):   参数file指定需要读取的文件;
                . FileReader(String name): 参数name指定需要读取的文件的路径;
                . FileWriter(File file)
                . FileWriter(String filename)
              * . FileWriter(String fileName, boolean append) 
              根据给定的文件名以及指示是否附加写入数据的 boolean 值来构造 FileWriter 对象,true为追加,false为覆盖。
        
    FileReader:new FileReader(“d:/back/string.txt”) = 
                                 new InputStreamReader(new FileInputStream(“d:/back/string.txt”));
    FileWriter:new FileWriter(“d:/back/string.txt”) = 
                                 new InputStreamWriter(new FileOutputStream(“d:/back/string.txt”));
     

    六、*BufferedReader类(*常用,有readLine方法)
             
                Reader类的read()方法每次都从数据源读入一个字符,BufferedReader带有缓冲区,它可以先把一批数据读到缓冲区内,接下来的操作都从缓冲区内获取数据,避免每次都从数据源读取数据并进行字符编码转换,从而提高读操作的效率。
                BufferedReader的readLine()方法可以一次读入一行字符,以字符形式返回。

                . BufferedReader(Reader in): 指定被修饰的Reader类;
                . BufferedReader(Reader in, int sz): 参数in指定被装饰的Reader类,参数sz指定缓冲区的大小,以字符为单位。
                
                  
    七、*PrintWriter(*常用,有write/print方法写一行,println方法带换行)


                  可以输出基本数据类型、对象、字符(字符数组)和字符串,但是不能输出字节流。
     
                  PrintWriter类可以代替桥和BufferedWriter
                  PrintStream类既可以输出字节流也可以输出字符流或者字符串
                *最后要用flush刷新缓存,用close关闭流。


    八、File类


                1. 构造方法


                   . File(String pathname): 参数pathname表示文件路径或者目录路径;
                   . File(String parent, String child): 参数parent表示根路径,参数child表示子路径;
                   . File(File parent, String child): 参数parent表示根路径,参数child表示子路径;


                2. 普通方法
                
          . boolean  createNewFile():文件已经存在,则创建失败(返回false),否则创建成功(返回true)。
          . boolean delete():删除文件或者空目录
          . boolean mkdir()/mkdirs():创建一个或者多个目录(连续创建)->如果该目录的父目录不存在话,那么还会创建所有的父目录;
          . boolean renameTo(File destination):文件的改名
          . boolean canRead()/canWrite():判断指定的文件是否能读取或者写入数据
          . boolean exists():判断指定的文件或者目录是否存在
          . String[] list():返回指定目录下所有文件名或者子目录名所组成的字符串数组
          . long  lastModified():返回指定文件最后一次被修改的时间(从1970年1月1日凌晨12点到这个文件的修改时间之间所经历的毫秒数)
          . String getPath()/getAbsolutePath():返回指定文件或者目录的路径和绝对路径
          . String getCanonicalPath(): 获取该File对象所代表的文件或者目录的正规路径
          . String getParent()/getName():返回指定文件或者目录的父目录(没有返回null)和名字


                   File f = new File(".\test.txt"));
                   System.out.println(f.getCanonicalPath());        //c:mytest est.txt
                   System.out.println(f.getAbsolutePath());          //c:mytest . est.txt
                   System.out.println(f.getPath());                        //. est.txt
                   if(!f.exists()) f.createNewFile());      
                  
            


    九、对象的序列化和反序列化


                  对象的序列化:  把对象写到一个输出流;
                  对象的反序列化:从一个输入流中读取一个对象;


         1. 对象的持久化
         2. 仅仅是一个对象的数据被序列化(将对象的数据序列化成字节流)
         3. 标识为transit的数据不能被序列化 例如:transit 类名 表示该类不能被序列化 或者transit 字段
         4. 要序列化的对象必须实现java.io.Serializable接口


                  对象的序列化主要用于:
         1. 网络中传输的是字节流的数据,网络中对象的传输,是将对象的数据经过序列化后转换成字节流。
         2.将对象数据序列化到文件中,将对象数据转换成字节流存储到文件中。

                     

                  从文件中读取字节流数据并转换成对象叫做对象的反序列化。


                  ObjectInputStream 和ObjectOutputStream(对象输入和输出流,可以读写基本数据类型和对象)
         1. ObjectInputStream 和ObjectOutputStream为应用程序提供对象的持久化存储
         2. 一个ObjectInputStream 可以反序列化通过ObjectOutputStream写入的基本数据类型和对象
         3. 构造器
             ObjectInputStream(InputStream in)
             ObjectOutputStream(OutputStream out)
         4. 方法
             readObject()/writeObject()  将对象写入到输出流中或者从输入流中读取对象
           
  • 相关阅读:
    验证foreach 能否操做更改原表
    asp.net post/get 公共方法
    C# json日期转换
    学数学
    2742: [HEOI2012]Akai的数学作业
    BZOJ2208
    树状数组求逆序对
    网络流复习计划
    SG函数学(hua)习(shui)记录
    SPLAY板子
  • 原文地址:https://www.cnblogs.com/codeToSuccess/p/13906266.html
Copyright © 2011-2022 走看看