在整个java.io包里面,File类是唯一一个与文件本身操作有关的类,但是不涉及到文件的具体内容。所谓的文件本身指的是文件的创建、删除等操作。
如果要想使用file类,那么首先就需要通过它提供的构造方法定义一个要操作文件的路径:
1、 设置完整路劲:publicFile(String pathname),大部分情况下使用此操作;
2、 设置父路径与子文件路径:publicFile(File parent,String child),在Android上使用比较多
以上的程序已经完成了具体的文件创建与删除的操作,但是此时的程序会存在有两个问题:
在进行java.io操作的过程之中,会出现有延迟情况,因为现在的问题是java程序是通过jvm间接的调用操作系统的文件处理函数进行的文件处理操作,所以中间会出现延迟情况
此时的确是已经可以列出目录中的内容了,但是所列出来的是子目录下的子目录火文件的名字。
范例:列出全部的file类对象
列出所有子路径
删除目录
3、File类虽然可以操作文件,但是并不是操作文件的内容,如果要进行内容操作只能通过两种途径完成:字节流、字符流。
对于java.io包而言它定义了两类流:
最有意思的是在JDK1.7的时候引入了一个非常神奇的自动关闭机制,所以让Closeable又多继承了一个AutoCloseable接口,这个接口定义如下:
但是OutputStream类是在JDK1.0的时候就提供的,这个类原本就定义了close()与flush()两个操作方法,所以现在以上的两个接口就几乎可以忽略了。
在OutputStream类里面一共提供有三个输出的方法:
1、输出单个字节:public abstract void write(int b) throws IoException;
2、输出全部字节数组:piblic void write(byte[] b) throws IOException;
3、输出部分字节数组:public void write(byte[] b,int off,int len) throws IOException;
Outputstream本身是属于抽象类,如果想要为抽象类进行对象的实例化操作,那么一定要使用抽象类的子类,本
对于要进行的是文件操作所以可以使用FileOutputstream子类。在这个子类里面定义有如下的构造方法:
1、创建或覆盖已有文件:public FileOutputStream(File file) throws FileNotFoundException;
2、文件内容追加:public FileOutputStream(File file,Boolean append) throws FileNotFoundException;
采用单个字节方式输出
输出部分字节数组内容
3.4、字符输入流:Reader
与字节输入流相比结构几乎是一样的,只是数据类型由byte更换为了char而已。
字节流与字符流的区别?
现在已经给出了两种数据流,那么开发之中到底使用哪一种?有什么区别?
字节流与字符流最大的区别是:字节流直接与终端进行数据交换,字符流需要将数据经过缓冲区处理后才可以输出。
在使用outputStream输出数据的时候即使最后没有关闭输出流,那么内容也可以正常输出,但是反过来如果使用的
是字符输出流,如果不关闭,那么就表示在缓冲区之中处理的内容不会被强制性的清空,所以就不会清空数据
在开发之中,对于字节数据处理比较多的,例如:图片、音乐、电影、文章,而对于字符流最大的好处是它可以进行中文的有效处理,那么在日后开发之中,如果要处理中文的时候请先优先考虑字符流,如果没有中文问题,建议使用字节流。
总结: