File类--输入流和输出流

Posted 梅岚纷飞

tags:

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

创建文件对象:可以是物理文件或目录,操作文件或目录的属性(路径、权限、日期和时间等)

通过流来读写文件,流是一组有序的数据序列,以先进先出方式发送信息的通道

很多的信息,都是通过文件来读取的,文件是数据源

对于程序来说,把文件读入到程序中,这是输入,把资料读出去是是输出。

在Java中流的分类:

按流向区分:        1、输出流---->OutputStream和Writer作为基类

              2、输入流---->InputputStream和Reader作为基类                    输入输出流是相对于计算机内存来说的

 

按照处理数据单元划分:    1、字节流---->字节输入流InputputStream  字节输出流OutputStream这两个作为基类  字节流是8位通过字节流,字符流是16位Unicode字符流

               2、字符流---->字符输入流Reader       字符输出流Writer这两个作为基类 

通常使用按处理数据单元划分的多一点。

字节流:  InputStream

            read()            从输入流一个字节一个字节的读,返回的是该字节的整数表示形式,如果到了输入流的末尾,返回-1

            read(byte[ ] a)         从输入流读取若干字节,把这些字节保存到数组a中,返回的是读取到字节数,如果到了输入流的末尾,返回-1

            read(byte[ ] a,int off,int len)    从输入流读取若干字节,把这些字节保存到数组a中,off指的是字节数组中开始保存数据的起始下标,len指读取的字节数                                                                                                     目。返回的是读取到的字节数,如果到了输入流的末尾,返回-1

            close()

            available()  可以从输入流中读取的字节数目

      FileInputStream(子类FileInputStream常用的构造方法)

            new FileInputStream(File file)    这是一个文件类

            new FileInputStream(String path)   这是路径

      OutputStream

            write(int a)

            write(byte [ ] a)

            write(byte [ ] a,int off ,int len)

            close()

            flush()              强制将缓冲区清空

      FileOutputStream

            new FileOutputStream(File file)

            new FileOutputStream(String path)

            new FileOutputStream(String path,boolean append)可以指定覆盖或追加文件内容

       Reader

            read()            从输入流一个字节一个字节的读,返回的是该字节的整数表示形式,如果到了输入流的末尾,返回-1

            read(byte[ ] a)         从输入流读取若干字节,把这些字节保存到数组a中,返回的是读取到字节数,如果到了输入流的末尾,返回-1

            read(byte[ ] a,int off,int len)    从输入流读取若干字节,把这些字节保存到数组a中,off指的是字节数组中开始保存数据的起始下标,len指读取的字节数                                                                                                     目。返回的是读取到的字节数,如果到了输入流的末尾,返回-1

            close()

       InputStreamReader

            new InputStreamReader(InputStream in)

            new InputStreamReader(InputStream in, String charsetName)

      FileInputStreamReader(是InputStreamReader的子类,该类只能按照本地平台的字符编码来读取数据,用户不能指定其他的字符编码类型)

            new FileReader(File file)

            new FileReader(String name)

System.getProperty("file.encoding");获得本地平台的字符编码类型

        Writer

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

            writer(String str,int off,int len)   将str字符串里从off位置开始,长度为len的多个字符输出到输出流中

            close()

            flush()            刷新输出流

       

使用io的步骤:

  1、引入相关的类

  2、构造文件输入流或输出流或字符输入流或字符输出流

  3、读取或写出文本文件的数据

  4、关闭流对象

案例:

import java.io.File;

import java.io.IOException;

public class TestClass {

   /**  

  * 创建一个文件或者目录  

  * @param file  

   */  

  public void creatFile(File file){  

     if(file.exists()){//判断文件或目录是否存在,存在为true    

      System.out.println("此文件已存在!");   

    }else{   

      try {    

         file.createNewFile();//创建文件     

        System.out.println("文件创建成功!");    

      } catch (IOException e) {     

        e.printStackTrace();   

       }   

    }

   }  

  /**  

  * 获得文件的信息  

  * @param file  

  */ 

  public void getFileInfo(File file){   

    if(file.exists()){//先判断是否有此文件或者目录   

       if(file.isFile()){//判断是否是文件    

         //获得文件的绝对路径     

        String string=file.getPath();//相对路径     

        String a=file.getAbsolutePath();//绝对路径     

        String name=file.getName();//获得文件名     

        System.out.println("相对路径:\t"+string);     

        System.out.println("绝对路径:\t"+a);     

        System.out.println("文件名为:"+name);    

        System.out.println("文件大小为:"+file.length());   

     }    

      if(file.isDirectory()){//判断是否是目录     

        System.out.println("此文件是目录");    

      }   

    }else {    

      System.out.println("此文件不存在!");   

    }  

  }  

  /**  

  * 删除文件  

  * @param file  

  */  

  public void del(File file){   

    if(file.exists()){//先要判断是否有此文件才可以进行删除工作    

      file.delete();    

      System.out.println("删除文件成功!");   

    }else{    

      System.out.println("此文件不存在");   

    }  

  }  

}

public static void main(String[] args) {
    //要去判断是否有这个文件或者目录,如果没有,那么就去创建一个文件
    TestClass testClass=new TestClass();
    File file=new File("E:/刘楠梅/text.txt");//这里是要创建的文件
  //  testClass.creatFile(file);//通过调用方法去检查是否有该文件或目录,没有就创建
  //  testClass.getFileInfo(file);
    testClass.del(file);
 }

以上是关于File类--输入流和输出流的主要内容,如果未能解决你的问题,请参考以下文章

java中IO常见的IO流和file类理论总结

Java IO流-- JAVA流式输入/输出原理 & 输入输出流分类 & 节点流和处理流 & IO流总结

一文完美诠释JavaIO流,小白都能读懂的输入和输出流操作流程总结

字节输出流和输入流copy图片

标准文件IO详解---标准输入流标准输出流和标准错误流

输入输出流和顶级父类