文件
概念:File类是Java.io包下代表与平台无关的文件和目录
应用:File类能新建、删除、重命名文件和目录等。(没有办法获得文件里面的内容 )
构造器:
new File(String pathName);(创建的文件可以不存在,但是文件的上一级目录必须存在)
eg: D:\workspace\atguigu\wh0422\a.txt
绝对路径:从盘符开始的路径
相对路径:(含义仅限于java代码中)
./ 代表当前项目 可以省略
…/ 代表当前项目的上一级
new File(String parent,String child);
(父级路径,子级名称)
eg: D:\workspace\atguiguwh0422,a.txt
new File(File parent,String child);
eg:父级对象,子级名称
方法:
-public String getName() 返回由此File表示的文件或目录的名称;
-public long length() 返回由此File表示的文件的长度字节数。
-public String getPath() 将此File转换为路径名称字符串
-public String getParent() 获得父级路径
-public String getAbsolutePath() 返回此File的绝对路径的名字(绝对路径是本身,相对路径会自动补齐)
-public boolean exists() 此File表示的文件或目录是否实际存在(true存在)
-public boolean isDirectory() 此File表示的是否为目录
-public boolean isFile() 此File表示是否为文件
-public isAbsolute() 判断File对象对应的文件或目录是否为绝对路径(true为是)
*public boolean canRead() 判断File对象对应的文件或目录是否可读
-public boolean canWrite() 判断File对象对应的文件或目录是否可写
-public boolean canHidden() 判断File对象对应的文件或目录是否隐藏
-public boolean createNewFile() 当且仅当具有该名称的文化尚不存在的时候,创建一个新的空文件(文件可以不存在,但是父级路径必须存在)
-public boolean delete() 删除由此File表示的文件或目录。只能删除文件或空目录
-public boolean mkdir() 创建由此File表示的目录(一个/一级)
-public boolean mkdirs() 创建由此File表示的目录,包括任何-pu何必需但不存在的父目录(多级目录)
-public String[] list() 返回一个String数组,表示该File目录中所有子类文件或目录的名称(一级)
-public File[] listFile() 返回一个File数组,表示该File目录中的所有的子文件或目录。(对象)
练习:递归
删除非空目录!
/**
* 删除文件下所有东西
*/
public class Test2 {
public static void main(String[] args) {
// String str=;
File file = new File("D:\\java");
dels(file);
}
public static void dels(File file){
//1.遍历目录
File[] list = file.listFiles();
for (File s: list) {
//2.删除目录
if (s.isFile()){
s.delete();
}else {
dels(s);
}
}
file.delete();
}
}
**IO**
功能:操作文件内容
分类:①根据数据的流向分为--->输入流----->输出流
I : input 输入流 读
外界(磁盘,网络。。)----》程序
O output 输出流 写
程序--》外界
:②根据数据的类型 --->字节流----->字符流
字节流:处理单位是字节
字符流:处理单位是字符
③ 根据IO流的角色不同分为:**节点流**和**处理流**。
节点流:原始流
处理流:在节点流的基础上进行了处理
-
节点流:
4大顶极父类(抽象类)
字节输入流:
InputStream
文件字节输入流:FileInputStream
字节输出流
OutputStream
文件字节输出流:FileOutputStream
字符输入流:
Reader
文件字符输入流:FileReader
字符输出流
Writer
文件字符输出流:FieWriter
InputStream-->FileInputStream
构造器:
new FileInputStream(File file);
new FileInputStream(String pathName);
方法:
int read();执行一次读取一个字节,通过int型表示,读到没有数据返回-1
int read(byte[] b);执行一次读取n个字节,n个字节存储在b中,返回的是读取的字节数
数组的长度和文件的剩余字节数,哪个小就读取多少个字节,读到没有数据返回-1
int read(byte[] b,int offset,int len)
计划读取len个字节,将数据存储在数组中,从数组的offset位置开始存
返回的是实际读取字节数,读到没有数据返回-1
close();关闭资源
-
OutputStream --> FileOutputStream
构造器:
new FileOutputStream(File file); 文件可以不存在,但是路径必须存在
new FileOutputStream(File file,boolean append); 文件可以不存在,但是路径必须存在
new FileOutputStream(String pathName); 文件可以不存在,但是路径必须存在
new FileOutputStream(String pathName,boolean append); 文件可以不存在,但是路径必须存在
方法:
write(int b) 执行一次写入一个字节
write(byte[] b) 执行一次将b中所有字节写入
write(byte[] b,int off,int len) 执行一次将b中off开始len这个字节写入
close();
2.2.3 Reader --> FileReader
构造器:
new FileReader(File file)
new FileReader(String pathName)
方法:
int read(); 执行一次读取一个字符,返回值是字符的int型表示,读到末尾依然返回-1
int read(char[] c);读取n个字符,存储在c中,返回读取的字符数,读到末尾依然返回-1
int read(char[] c,int off,int len) 计划读取len个字符,存储从c的off位置开始存,读到末尾依然返回-1
2.2.4 Writer --> FileWriter
构造器:
new FileWriter(File file);
new FileWriter(String pathName);
new FileWriter(String pathName,boolean append);
new FileWriter(File file,boolean append);
方法:
write(int c)
write(char[] c)
write(char[] c,int off,int len)
write(string str)
write(string str,int off,int len)
out.flush(); 刷新的
close()
字符流如果没有关闭资源,则写入失败!因为没有刷新
write-->将内容写到了缓存内-->刷新(将缓存中的内容落盘)
close先刷新,在释放资源!
flush和close的区别:
flush--只是刷新,资源时不释放的,所以流对象可以正常使用
close--先刷新在关闭资源,导致流对象就不能再使用了