文件操作大全

一,操作文件目录或文件

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类专门提供处理目录的类,对路径进行各种处理。

原文地址:https://www.cnblogs.com/hebiao/p/14217218.html