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\test.txt
               System.out.println(f.getAbsolutePath());          //c:\mytest\ .\test.txt
               System.out.println(f.getPath());                        //.\test.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()  将对象写入到输出流中或者从输入流中读取对象
       

猜你喜欢

转载自blog.csdn.net/BHSZZY/article/details/78857908