• 文件操作大全


    一,操作文件目录或文件

    1.在计算机中,都是以文件形式在硬盘上存储资源的,那么计算机上的文件该怎么操作呢?

    Java的标准库java.io提供了File对象来操作文件和目录,通过File对象跟硬盘上的文件建立联系,形成一种映射关系,从而达到在内存中操作File对象间接操作文件

    实例:

    String path="src"+File.separator+"resources"+File.separator+"Format.xml";//真实文件路径
            File file=new File(path);//通过真实路径创建File对象
            if(file.exists()){//判断文件是否存在
                file.renameTo(new File("src\resources\Format2.xml"));//移动文件并改名
            }else{//文件不存在,创建一个新文件
                boolean b=file.createNewFile();
                if(b){
                    file.deleteOnExit();//当jvm终止时删除文件
                }
    
            }
    View Code

     File对象还有很多方法操作文件或目录,就不一一列举了,查api可知悉

    二,File对象更多是对文件属性,只读呀,复制呀,重命名这些外在属性,通过流来操作文件内容。

    1.流是什么?我们说的流指的io流

    IO是指Input/Output,即输入和输出。以内存为中心:

    • Input指从外部读入数据到内存,例如,把文件从磁盘读取到内存,从网络读取数据到内存等等。即获取到文件内容,

    • Output指把数据从内存输出到外部,例如,把数据从内存写入到文件,把数据从内存输出到网络等等。

    • IO流以byte(字节)为最小单位,因此也称为字节流

    读文件内容到内存,并且最终以byte,string等java提供的数据类型表示,同样加载到内存中的代码才能进行处理,由于内存的不可持久化保持数据的特性,

    因此我们还需要输出流output将读到内存中的数据写入到磁盘文件里永久保存。

    2.InputStream输入流、OutputStream输出流,java提供的两种最基本字节流,以byte为单位读取

    public abstract class InputStream implements Closeable
    public abstract class OutputStream implements Closeable, Flushable 
    这两个都是抽象类,实际应用过程我们需要用到它们的实现类子类构建对象

    常用的InputStream子类:FileInputStream(数据源-文件-桥梁),BufferedInputStream(缓冲流-包裹低级流提高性能-数据源来自低级流)
                 ByteArrayInputStream(数据源来自字节数组-从文件读到的数据存放到字节数组作为缓冲区,再从数组中读)
                 ObjectInputStream(对象流-用作反序列化,把压扁序列化到文件里的对象恢复过来-高级流,低级流作为桥梁跟数据源)
                
    PipedInputStream(管道流-用作线程间通信)
    过时:StringBufferInputStream       
    问题:1.BufferedInputStream跟ByteArrayInputStream的区别,粗略认为参数不同,数据来源不一样       

    常用的OutputStream子类:FileOutputStream,BufferedOutputStream
                 ByteArrayOutputStream,BufferedOutputStream
                 ObjectOutputStream
                 PipedOutputStream
                 

    3.Reader输入流,Writer输出流,java提供的两种最基本字符流,以char为单位读取

    public abstract class Reader implements Readable, Closeable 
    public abstract class Writer implements Appendable, Closeable, Flushable 

    常用的Reader子类:FileReader(文件字符读取流-桥梁),CharArrayReader(数据源-char数组),StringReader(数据源-String)
    InputStreamReader(转换器-Reader底层实际是InputStream byte转化为char,这个类就是把InputStream转换为Reader)

    常用的Writer子类:FileWriter(文件字符写入流),CharArrayWriter(写入到char数组缓冲区),StringWriter(写入到String)
    OutputStreamWriter(转换器-OutputStream转换为Writer)

     三,PrintStream和PrintWriter

    PrintStream是一种能接收各种数据类型的输出,打印数据时比较方便:

    • System.out是标准输出;
    • System.err是标准错误输出。

    PrintWriter是基于Writer的输出

    四,关闭流

    1.一一关闭流:先打开的后关闭,即关闭流顺序跟声明顺序相反

    2.关闭最外层流:装饰模式,a被包装进b,b再包装进c,那么只需要关闭c

    3.try自动关闭流:实现了Closeable接口的类,声明放进try会自动关闭流。

    五,读写文件类Files,路径处理类Paths

    为简化我们自己写读写文件一些功能,Files类封装好了一些方法给我们读写,复制删除等功能

    Paths类专门提供处理目录的类,对路径进行各种处理。

  • 相关阅读:
    switch的使用
    ArrayAdapter的使用
    android的xml中怎么实现按钮按下去变颜色
    Intent跳转的设置和Bundle的使用
    监听JList列表项的单击事件
    草稿
    Android背景图覆盖状态栏(我的手机安卓版本是4.2.2)
    RSA加密解密 (输入数值)
    仿射密码加密解密 (输入字母数值)
    Intent.ACTION_PICK
  • 原文地址:https://www.cnblogs.com/hebiao/p/14217218.html
Copyright © 2020-2023  润新知