zoukankan      html  css  js  c++  java
  • Java FIle类和IO流

    **File类**

    - java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建、查找和删除等操作。

    ```java
    构造方法:
    public File(String pathname):通过将给定的路径名字符串转化为抽象路径名来创建新的File实例。
    参数:
    String pathname:字符串的路径名称
    路径是可以是以文件结尾,也可以是以文件夹结尾。
    路径可以是相对路径,也可以是绝对路径
    路径可以是存在,也可以是不存在
    创建File对象,只是把字符串路径封装为File对象,不考虑路径的真假情况。
    public File(String parent,String child):从父路径名字符串和子路径名字符串创建新的File实例。
    参数:把路径分成了两部分
    String parent:父路径
    String child:子路径
    好处:
    父路径和子路径,可以单独书写,使用起来比较灵活;父路径和子路径都可以变化。
    public File(File parent,String child):从父抽象路径名和子路径名字符串创建新的File实例
    参数:把路径分成了两部分
    File parent:父路径
    String child:子路径
    好处:
    父路径和子路径,可以单独书写,使用起来比较灵活;父路径和子路径都可以变化。
    父路径是File类型,可以使用File的方法对路径进行一些操作,再使用路径创建对象。
    java把电脑中的文件或文件夹(目录)封装为一个File类,我们可以使用File类对文件和文件夹进行操作。
    我们可以使用File类的方法
    创建一个文件/文件夹
    删除文件/文件夹
    获取文件/文件夹
    判断文件/文件夹是否存在
    对文件夹进行遍历
    获取文件的大小
    File类是一个与系统无关的类,任何的操作系统都可以使用这个类中的方法
    分隔符
    static String pathSeparator 与系统有关的路径分隔符,为了方便,他被表示成为一个字符串。
    static char pathSeparatorChar 与系统有关的路径分隔符。
    static String separator 与系统有关的默认名称分割符,为了方便,它被表示为一个字符串。
    static char separatorChar 与系统有关的默认名称分隔符
    常用方法
    获取功能的方法:
    public String getAbsoluPath():返回File的绝对路径名字符串。
    public String getPath():将此File转换为路径名字符串
    public String getName():返回此File表示的文件或目录名称。
    pubilc long length():返回此File表示的文件的长度。
    注意
    文件夹是没有大小概念的,不能获取文件夹的大小
    如果构造方法中给出的路径不存在,那么length返回0
    判断功能的方法:
    public boolean exists():此File表示的文件或目录是否实际存在。
    public boolean isDirectory():此File表示的是否为目录。
    public boolean isFile():此File表示的是否为文件。
    注意:
    电脑的硬盘中只有文件/文件夹。两个方法是互斥的
    这两个方法的使用前提,路径必须是存在的,否则都返回false
    创建删除功能的方法
    public boolean creatNewFile():当且仅当具有该名称的文件尚不存在时,创建一个新的空的文件。
    创建文件的路径和名称在构造方法中给出(构造方法的参数)
    返回值:布尔值
    true:文件不存在,创建文件,返回true
    false:文件存在,不会创建,返回false
    注意:
    1.此方法只能创建文件,不能创建文件夹
    2.创建文件的路径必须存在,否则抛出异常。
    public boolean delete():删除此File表示的文件和目录。
    返回值:布尔值
    true:文件/文件夹成功删除
    false:文件夹中有内容,不会删除返回false;构造方法中路径不存在返回false
    注意:
    delete方法时直接在硬盘删除文件/文件夹,不走回收站。
    public boolean mkdir():创建此File表示的目录
    public boolean mkdirs():创建此File表示的目录,包括任何必须但不存在的父目录。(既可以创建单级文件夹,也可以创建多级文件夹)
    创建文件的路径和名称在构造方法中给出(构造方法的参数)
    返回值:布尔值
    true:文件夹不存在,创建文件夹
    false:文件夹存在,不会创建;当构造方法中的路径不存在时,也返回false
    注意:
    此方法只能创建文件夹,不能创建文件
    路径
    绝对路径:是一个完整的路径,以盘符开始的路径
    相对路径:是一个简化路径,相对于当前项目的根目录。
    注意:
    1.路径不区分大小写。
    2.路径中的文件名称分隔符windows使用反斜杠 反斜杠是转义字符,两个反斜杠代表一个普通的反斜杠。

    File类遍历(文件夹)目录功能:
    public String[] list():返回一个String数组,表示该File目录中的子文件或目录。
    public File[] listfiles():返回一个File数组,表示该File目录中的所有子文件和目录。
    注意:
    两个方法遍历的都是构造方法中给出的目录。
    如果构造方法中给出的目录的路径不存在,会抛出空指针异常
    如果构造方法中给出的路径不是一个目录,也会抛出空指针异常

    ```

    ```java
    IO
    java.io.OutputStream:字节输出流
    此抽象类是表示输出字节流的所有类的超类
    定义了一些子类共性的成员方法:
    public void close():关闭此输出流并释放与此流相关变量的任何系统资源
    public void flush():刷新此输出流并强制任何缓冲的输出字节被写出。
    public void write(byte[] b):将 b.length 字节从指定的字节数组写入此输出流
    一次写多个字节:
    如果写的第一个字节是正数(0-127),那么显示的时候会查询ASCII表
    如果写的第一个字节是负数,那么第一个字节会和第二个字节,两个字节组成一个中文显示,查询系统默认码表(GBK)
    public void write(byte[] b,int off,int len):从指定的字节数组写入len字节,从偏移量off开始输出到此输出流。
    参数:
    int off:数组的开始索引
    int len:写几个字节
    public abstract void write(byte[ b):将指定的字节输出流
    java.io.FileOutputStream extends OutputStream
    FileOutputStream:文件字节输出流
    作用:将内存中的数据写入到硬盘的文件中。
    构造方法:
    FileOutputStream(String name):创建一个向具有指定名称的文件中写入数据的文件输出流
    FileOutputStream(File file):创建一个向指定file对象表示的文件中写入数据的文件输出流
    参数:写入数据的目的地
    String name:目的地是一个文件的路径
    File file:目的地是一个文件
    构造方法的作用:
    1.会创建一个FileOutputStream对象
    2.会根据构造方法中传递的文件/文件路径,创建一个空的文件
    3.会把FileOutputStream对象指向创建好的文件。
    写入数据的原理(内存-->硬盘)
    java程序-->JVM(Java虚拟机)-->os(操作系统)-->os调用写数据的方法-->把数据写入到文件中
    字节输出流的使用步骤:
    1.创建一个FileOutputStream对象,构造方法中传递写入数据的目的地
    2.调用FileOutputStream对象中的方法writem,把数据写入到文件中。
    3.释放资源(流使用会占有一定的内存,使用完毕要把内存清空,提供程序的效率)
    追加写/续写:使用两个参数的构造方法
    FileOutputStream(String name,boolean append):创建一个向具有指定的name的文件中写入数据的文件输出流
    FileOutputStream(File file,boolean append)创建一个向指定file对象表示的文件中写入数据的文件输出流
    参数:
    String name,File file 写入数据的目的地
    boolean append 追加写开关
    true:创建对象不会覆盖源文件,继续在文件的末尾追加写数据
    false:创建一个新的文件,覆盖原文件
    写换行:
    windows:
    linux: /n
    mac: /r

    ```

    ```java
    IO
    java.io.InputStream:字节输入流
    此抽象类是表示字节输入流的所有类的超类

    定义了所有子类共性的方法:
    int read():从输入流中读取数据的下一个字节
    int read(byte[] b):从输入流中读取一定数量的字节,并将其存储在缓冲区数组b中
    void close():关闭此输入流并释放与该流关联的所有系统资源。

    java.io.FileInputStream extends InputStream
    FileInputStream:文件字节输入流
    作用:把硬盘文件中的数据,读到内存中使用。

    构造方法:
    FileInputStream(String name)
    FileInputStream(File file)
    参数:读取文件的数据源
    String name:文件的路径
    File file:文件
    构造方法的作用
    1.会创建一个FileInputStream对象
    2.会把FileInputStream对象指定到构造方法中要读取的文件

    读取原理:
    java程序-->JVM-->OS-->OS读取数据的方法-->读取文件

    字节输入流的使用步骤:
    1.创建FileInputStream对象,构造方法中绑定要读取的数据源
    2.使用FileInputStream对象中的方法read,读取文件
    3.释放资源

    字节流一次读取多个字节的方法:
    int read(byte[] b):从输入流中读取一定数量的字节,并将其存储在缓冲区数组b中
    方法中参数byte[] b的作用:
    1.起到缓冲作用,存储每次读取到的多个字节
    2.数组的长度一般定义为1024(1kb)或者1024的整数倍
    方法返回值int作用:
    返回的是每次读取的有效字节个数

    ```

    ```java
    java.io.Reader:字符输入流,是字符输入流的最顶层父类,定义了一些共性的成员方法,是一个抽象类。

    共性方法:
    int read():读取单个字符并返回
    int read(char[] cbuf):一次读取多个字符,将字符读入数组。
    void close():关闭该流并释放与之相关联的所有资源

    java.io.FileReader extends InputStreamReader extends Reader
    FileReader:文件字符输入流
    作用:把硬件文件中的数据以字符的方式读取到内存中

    构造方法:
    FileReader(String filename):
    FileReader(File file)
    参数:读取文件的数据源
    String fileName:文件路径
    File file;一个文件
    FileReader构造方法的作用:
    1.创建一个FileReader对象
    2.会把FileReader对象指向要读取的文件

    字符输入流的使用步骤:
    1.创建FileReader对象,构造方法中绑定要读取的数据源
    2.使用FileReader对象中的方法read读取文件
    3.释放资源
    ```

    ```java
    java.io.writer:字符输出流,是所有字符输出流的最顶层父类,是一个抽象类

    共性方法:
    void write(int c):写入单字符
    void write(char[] cbuf):写入字符数组
    abstract void write(char[] cbuf,int off,int len):写入字符数组的某一部分,off数组的开始索引,len写的字符个数
    void write(String str):写入字符串
    void write(String str,int off,int len):写入字符串的某一部分,off字符串的开始索引,len写的字符个数
    void flush():刷新该流的缓冲
    void close():关闭此流,但要先刷新它。

    java.io.FileWriter extends OutputStreamWriter extends Writer
    FileWriter:文件字符输出流
    作用:把内存中的数据写入到硬盘文件中

    构造方法:
    FileWriter(File file):根据给定的File对象构造一个FileWriter对象
    FileWriter(String fileName):根据给定的文件名构造一个FileWriter对象。
    参数:写入数据的目的地
    String fileName:文件的路径
    File file:是一个文件
    构造方法的作用:
    1.会创建一个FileWriter对象
    2.会根据构造方法中传递的文件/文件的路径,创建文件
    3.会把FileWriter对象指向创建好的文件

    续写/换行
    续写,追加写:使用两个参数的构造方法
    FileWriter(String fileName,boolean append)
    FileWriter(File file,boolean append)
    参数:
    String fileName,File file:写入数据的目的地
    boolean append:续写开关
    true:不会创建新的文件覆盖源文件,可以续写;
    false:创建新的文件覆盖源文件。
    换行:换行符号
    windows:
    linux: /n
    mac: /r
    ```

    **以上是关于File类和IO流的笔记分享**

     
  • 相关阅读:
    【PA2014】【BZOJ3709】Bohater(贪心,排序)
    【POJ1328】Radar Installation(贪心,决策包容)
    【NOIP2002】【Luogu1032】字串变换
    【NOIP2010】【Luogu1199】三国游戏
    【NOIP2009】【Luogu1068】分数线划定
    【NOIP2002】【Luogu1036】选数
    【NOIP2004】【Luogu1085】不高兴的津津
    【NOIP2003】【luogu1042】乒乓球
    【NOIP2012】【Luogu1080】国王游戏(贪心,邻项交换)
    Jzoj4894 SJR的直线
  • 原文地址:https://www.cnblogs.com/haoshaoqian/p/12891734.html
Copyright © 2011-2022 走看看