File 类以及 InputStream, OutputStream 的用法

一、File类

        对于文件的操作,java提供了一个File类来进行相关抽象描述。但需要注意的是,有File对象,并不代表就真实存在这个文件。

1、属性

修饰符及类型 属性 说明
static String pathSeparator pathSeparator是File里的静态变量,就是“ / ”或者“ \ ”,跟着系统走的
static char pathSeparator pathSeparator是File里的静态变量,就是“./”或者“.\”,跟着系统走的

2、构造方法

        File(String pathname),根据文件路径创建一个新的File实例,路径可以是相对路径,也可以是绝对路径。

        绝对路径:就是以C:、D:这种盘符开头的路径,将路径位置从头到尾实际写出来的。

        相对路径:以当前所在目录(又称为工作目录,每个程序运行的时候,都有一个工作目录),为基准,以 . 或者.. 开头的,找到指定的路径的方法。

        举例说明:D盘tmp目录下有1、2、3三个名字的文件夹,定位文件夹1中某个文件:如果工作目录是文件夹2 中的aaa文件夹,绝对路径:D:/tmp/1,这个路径是固定的,相对路径:../../1,如果工作目录是tmp,那么相对路径就是:./1。“../”表示上一级目录,“./”表示当前目录。

3、方法

修饰符及返回值类型 方法签名 说明
String getParent 返回File对象的父目录文件路径 
String getName 返回File对象的纯文件名称
String getPath() 返回File对象的文件相对路径
String getAbsolutePath() 返回File对象的绝对路径(会标识当前的目录)
String getCanonicalPath() 返回File对象的修饰过的绝对路径
boolean exists() 判断File对象描述的文件是否真实存在
boolean isDirectory()

判断File对象代表的文件是否是一个目录

boolean isFile 判断File对象代表的文件是否是一个普通文件
boolean creatNewFile() 根据File对象,自动创建一个空文件,成功创建后返回true
boolean delete() 根据File对象,删除该文件。成功删除后返回true
void deleteOnExit() 根据File对象,标注文件将被删除,删除动作会到JVM运行结束时才会执行
String[] list() 返回File对象代表的目录下的所有文件名
File[] listFIles() 返回File对象代表的目录下的所有文件,以File对象表示
boolean mkdir() 创建File对象代表的目录,只能创建一级目录
boolean mkdirs() 创建File对象代表的目录,可以创建多级目录
boolean renameTo(File dest) 进行文件改名,也可以视为我们平时的剪切、粘贴操作
boolean canRead() 判断用户是否对文件有可读权限
boolean canWrite() 判断用户是否对文件有可写权限

二、InputStream

        针对文件内容,使用“流对象”来进行操作。Java标准库中的流对象,从类型上分为字节流即操作二进制数据的和字符流即操作文本数据的。字节流中,又存在InputStream和OutputStream两个抽象类。

        InputStream方法:

修饰符及返回值类型 方法名 说明
int read() 读取一个字节的数据,返回-1表示已经读完了
int read(byte[]b) 最多读取b数组长度字节的数据到b中,返回实际读到的数目;-1同样也代表读完了
int

read(byte[] b,

int off,int len)

最多读取len - off字节的数据到b中,放在从off开始,返回实际读到的数量;-1代表读完了
void close() 关闭字节流

        InputStream只是一个抽象类,要使用还要具体的实现类,对于文件读取来说,通常使用FileInputStream,其构造方法如下:

方法名 说明
FileInputStream(File file) 利用File构造文件输入流
FileInputStream(String name) 利用文件路径构造文件输入流

三、OutputStream

        方法:

修饰符及返回值类型 方法名 说明
void write(int b) 写入要给字节的数据
void write(byte[] b) 将b这个字符数组中的数据全部写入到os中
void write(byte[]b,int off,int len) 将b这个字符数组中从off开始的数据写入到os中,一共len个
void close() 关闭字节流
void flush() 大多的OutputStream为了减少设备操作的次数,在写数据的时候会将数据暂时写入到内存的一个指定的区域里,直到这个区域被填满了或者其他指定条件的时候才真正的将数据写入到设备中。这个区域也被称为缓冲区。这就有可能导致我们写的数据有一部分遗留在缓冲区中,需要在最后或者合适的一个位置,调用这个方法,将数据刷新到设备中。

        同样的,OutputStream也是一个抽象类,要使用需要具体的实现类,而对于写入文件来说,使用FIleOutputStream。

你可能感兴趣的:(java,jvm,servlet)