java基础14

1.文件操作

文件---把数据持久化到磁盘的载体
    文件的组成:1.文件的基本属性【文件命名,文件类型,文件的创建时间,文件的大小.....】
                       2.文件中的数据
我们要想通过java提供的输入输出流读写文件中的内容就得先学会操作文件。
Java中为我们提供了一个专门操作文件的java类--java.io.File类

2.File类的对象创建和常用方法?

    File类的定义  public class File
    File类的静态成员变量:
    static String    pathSeparator 与系统相关的路径分隔符字符,为方便起见,表示为字符串。 
    static char    pathSeparatorChar 与系统相关的路径分隔符。 
    static String    separator 与系统相关的默认名称 - 分隔符字符,以方便的方式表示为字符串。 
    static char    separatorChar 与系统相关的默认名称分隔符。 
    
File类的构造方法
    File(String pathname) 通过给定的文件路径字符串创建新的 File实例。 
    File(String parent, String child) 通过给定的文件位置字符串和给定的文件名称字符串创建新的 File实例。 
    File(File parent, String child) 通过给定的文件位置File对象和给定的文件名称字符串创建新的 File实例。  

File类的实例方法
    boolean    exists() 判断路径名表示的文件或目录是否存在。 
    boolean    createNewFile() 创建新文件
    boolean    mkdirs()  创建新的文件夹
    boolean    delete()  删除文件/文件夹
              删除文件夹的时候要将该文件夹下的文件和子文件夹全部删除
    boolean    canRead() 判断文件是否可读
    boolean    canWrite() 判断文件是否可写 
    boolean    isHidden() 判断文件是否为隐藏文件。 
    boolean    isFile() 判断文件对象是否为普通文件。 
    boolean    isDirectory() 判断文件对象是否为目录。
    String    getPath() 得到文件对象的路径名字符串。 
    String    getName() 得到文件对象所表示的文件或目录的名称。 
    String    getParent() 得到文件对象所表示的路径的父目录路径 
    long    length() 得到文件对象所表示的文件的长度。 
    long    lastModified() 得到文件对象所表示的文件上次修改的时间。 
    String[]    list() 得到文件对象代表的文件夹中的所有文件和文件夹名称返回一个字符串数组
    File[]    listFiles() 得到文件对象代表的文件夹中的所有文件和文件夹的文件对象,返回一个文件对象

3.输入输出流

输入输出流--读写文件
    输入--从文件中获取数据到自己的程序中接受处理【读】
    输出--将自己的程序中处理好的数据保存到文件中【写】
    流----数据的移动轨迹

4.流的分类

    按照数据的移动轨迹将流分为:输入流  输出流
    按照每一次读/写数据量的大小将流分为:字节流  字符流
    字节流:每一次可以读写一个字节的数据量,一个字节就是8位2进制,可以处理任何类型的文件【文本,图片,视频.......】
    字符流: 每一次可以读写一个字符的数据量,一个字符就是16位2进制,只能处理文本类型的数据。
    详细划分: 字节输入流  字节输出流  字符输入流  字符输出流

5.字节流相关类的使用

    字节输出流---OutputStream---抽象类---不能new---子类
    1.FileOutputStream类
    FileOutputStream类构造方法:
    FileOutputStream(File file) 通过File对象创建一个不可追加的字节输出流。 
    FileOutputStream(File file, boolean append) 通过File对象创建一个是否追加的字节输出流。
    FileOutputStream(String name) 通过String 对象创建一个不可追加的字节输出流。  
    FileOutputStream(String name, boolean append)通过String对象创建一个是否追加的字节输出流。
   FileOutputStream类实例方法:
    void    write(byte[] b) 将 b.length个字节从指定的字节数组写入此文件输出流。 
    void    write(byte[] b, int off, int len) 将 len字节从位于偏移量 off的指定字节数组写入此        文件输出流。 
    void    write(int b) 将指定的字节写入此文件输出流。 
    void    close() 关闭此文件输出流并释放与此流相关联的任何系统资源。

  2.DataOutputStream类

    DataOutputStream类的构造方法
    DataOutputStream(OutputStream out) 创建一个新的数据输出流,以将数据写入指定的底层输出流。 

   DataOutputStream类的实例方法
    void    writeBoolean(boolean v) 将 boolean写入底层输出流作为1字节值。 
    void    writeByte(int v) 将 byte作为1字节值写入底层输出流。 
    void    writeChar(int v) 将 char写入底层输出流作为2字节值,高字节优先。 
    void    writeDouble(double v) 双参数传递给转换 long使用 doubleToLongBits方法在类 Double ,然后写入该 long值基础输出流作为8字节的数量,高字节。 
    void    writeFloat(float v) 浮子参数的转换 int使用 floatToIntBits方法在类 Float ,然后写入该 int值基础输出流作为一个4字节的数量,高字节。 
    void    writeInt(int v) 将底层输出流写入 int作为四字节,高位字节。 
    void    writeLong(long v) 将 long写入底层输出流,为8字节,高字节为首。 
    void    writeShort(int v) 将 short写入底层输出流作为两个字节,高字节优先。 
    void    writeUTF(String str) 使用 modified UTF-8编码以机器无关的方式将字符串写入基础输出流
    void    flush() 刷新此数据输出流。 
    void    close() 关闭此输出流并释放与此流相关联的任何系统资源。 

   优点:可以直接写出基本数据类型的数据和String,且不需要转换成字节数组
    缺点:保存到文件中的数据是乱码

    3.序列化---将一个java对象转换成2进制流数据过程
    因为我们做操作的java对象可能需要在多台计算机之间传递。
    如何实现序列化?
    1.为被序列化的java对象的生成类实现一个序列化接口【Serializable】
    public interface Serializable
    特殊----该接口中一个方法都没有。
    类的序列化由实现java.io.Serializable接口的类启用。 
    不实现此接口的类将不会使任何状态序列化或反序列化。
    可序列化类的所有子类型都是可序列化的。
    2.通过java提供ObjectOutputStream类的writeObject(Object obj)
    ObjectOutputStream的构造方法
    ObjectOutputStream(OutputStream out) 创建一个写入指定的OutputStream的ObjectOutputStream。 
    实例方法
    void    writeObject(Object obj) 将指定的对象写入ObjectOutputStream。 

   字节输入流---InputStream---抽象类---不能new---子类
    1.FileInputStream类
    FileInputStream类构造方法:
    FileInputStream(File file) 通过File对象创建一个字节输入流
    FileInputStream(String name) 通过String对象创建一个字节输入流

    FileInputStream类实例方法
    int    read() 从该输入流读取一个字节的数据。 
    返回值:读取到的具体字节数据的int型,如果到达文件末尾返回-1
    int    read(byte[] b) 从该输入流读取最多 b.length个字节的数据为字节数组。
    返回值:读取的总字节数, 如果到达文件末尾返回-1
    void    close() 关闭此文件输入流并释放与流相关联的任何系统资源。 

    2.DataInputStream类
    DataInputStream类构造方法
    DataInputStream(InputStream  in)创建使用指定的底层InputStream的DataInputStream。

    DataInputStream类实例方法
    boolean    readBoolean() 
    byte    readByte() 
    char    readChar() 
    double    readDouble() 
    float    readFloat() 
    int    readInt() 
    long    readLong() 
    short    readShort() 
    String    readUTF() 
    void    close() 

   3.反序列 化---将2进制流数据转换成java对象的过程
    需要ObjectInputStream类的Object  readObject()方法读取对象。
    ObjectInputStream类的构造方法
    ObjectInputStream(InputStream  in)
    ObjectInputStream类的实例方法
    Object    readObject() 从ObjectInputStream读取一个对象。

6.字符流相关的操作类

   字符输出流---Writer类---抽象类---不能new---子类
    1.FileWriter类
    FileWriter类的构造方法
    FileWriter(File file) 给一个File对象构造一个FileWriter对象。 
    FileWriter(File file, boolean append) 给一个File对象构造一个是否允许追加FileWriter对象。 
    FileWriter(String fileName) 给一个String对象构造一个FileWriter对象。
    FileWriter(String fileName, boolean append)给一个String对象构造一个是否允许追加FileWriter对象。

   FileWriter类的实例方法
    void    write(char[] cbuf) 写入一个字符数组。 
    void    write(char[] cbuf, int off, int len) 写入字符数组的一部分。 
    void    write(int c) 写一个字符 
    void    write(String str) 写一个字符串 
    void    write(String str, int off, int len) 写一个字符串的一部分。 
    void    close() 关闭流,先刷新。 
    void    flush() 刷新流。 

    
    2.BufferedWriter类
    BufferedWriter类的构造方法
    BufferedWriter(Writer  out)通过字符输出流的对象创建BufferedWriter
    BufferedWriter类的实例方法
    void    newLine() 写一行行分隔符。 
    void    write(char[] cbuf, int off, int len) 写入字符数组的一部分。 
    void    write(int c) 写一个字符 
    void    write(String s, int off, int len) 写一个字符串的一部分。 
    void    close() 关闭流,先刷新。 
    void    flush() 刷新流。 

   3.OutputStreamWriter类 
    OutputStreamWriter类构造方法
    OutputStreamWriter(OutputStream out)将字节输出流转换成字符输出流

    字符输入流---Reader类---抽象类---不能new---子类
    1.FileReader类
    FileReader类的构造方法
    FileReader(File file) 给一个File对象构造一个FileReader对象。 
    FileReader(String fileName) 给一个String对象构造一个FileReader对象。
    FileReader类的实例方法
    int    read() 读一个字符。返回值是读取的真实字符数据的整数值,如果已经达到流的末尾,则为-1
    int    read(char[] cbuf) 将字符读入数组。返回总字符数,如果到达文件末尾返回-1
    void    close() 关闭流并释放与之相关联的任何系统资源。 

  2.BufferedReader类
    BufferedReader类构造方法
    BufferedReader(Reader in)通过字符输入流对象创建一个BufferedReader
    BufferedReader类实例方法
    int read() 读一个字符。返回值是读取的真实字符数据的整数值,如果已经达到流的末尾,则为-1。int        int read(char[] cbuf) 将字符读入数组。返回总字符数,如果到达文件末尾返回-1
    void    close() 关闭流并释放与之相关联的任何系统资源。 
    String    readLine() 读一行文字。 
     BufferedReader            Scanner
    readLine()从文件中读取      nextLine()从键盘输入中读取
    我们能不能通过BufferedReader读取键盘输入的数据?????
    Scanner的nextLine()方法为什么可以读取键盘输入????
    因为Scanner对象在创建的时候使用了System.in,System.in默认就是键盘输入。
    只要在创建BufferedReader对象的时候,使用System.in就可以完成键盘输入。
    BufferedReader(Reader in)参数是Reader字符输入流
    System.in----InputStream类型字节输入流
    解决问题的关键就是将InputStream类型字节输入流转换成Reader字符输入流。
    3.InputStreamReader类【字节输入流转成字符输入流】
    InputStreamReader类构造方法
    InputStreamReader(InputStream in)字节输入流转成字符输入流

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值