package edu.fjut.file;
import java.io.File;
import java.io.IOException;
/* 在整个IO包中,唯一表示与文件本身有关的类就是File类
* 使用File类可以进行创建或删除文件(夹)等操作,但不包括写数据到文件
*/
public class FileOperator {
public static void main(String[] args) throws IOException {
//在File类中,有一些常量并没有用大写,实际上这是java的历史遗留问题,在早期并没有这种命名规范
/*file.separator会根据不同操作系统选择相应的路径分隔符,这样java程序就具有可移植性.
* windows 使用"\"(注意要转义) linux 使用"/
* 实例化File类的对象,在d盘创建一个名为file的空文件,后缀名可有可无
* 如果写了后缀名,windows就会以一种默认的方式打开
*/
File file=new File("d:"+File.separator+"file");
if(file.exists()){//判断一个文件是否存在
file.delete();//删除文件
}
else{
file.createNewFile();//根据给定的路径创建文件,注意抛出异常
}
/* 从程序的运行结果中可以看出,所有的操作(创建、删除)并不会立马执行.
* 因为java是通过JVM与底层进行交互的,所以所有的操作都要经过JVM完成,
* 那么就有可能产生延迟.
*/
}
}
package edu.fjut.file;
import java.io.File;
//操作文件夹
public class DirectionOperator {
public static void main(String[] args) {
File file=new File("d:"+File.separator+"javase");
file.mkdir();//创建目录
/* 列出指定目录的全部文件
* 1.以字符串数组的形式返回(只是返回文件(夹)的名字):public String[[] list()
* 2.以File数组的形式返回:public File[] listFiles()
*/
String []files1=file.list();
for(String f:files1){
System.out.println(f);
}
/*输出
Oracle学习.txt
Oracle笔记.doc
上善若水.txt
新建文件夹
*/
File []files2=file.listFiles();
for(File f:files2){
System.out.println(f);
}
/*输出 列出了完整的路径,这样对于程序本身来说是很容易操作的
d:\javase\Oracle学习.txt
d:\javase\Oracle笔记.doc
d:\javase\上善若水.txt
d:\javase\新建文件夹
*/
}
}
package edu.fjut.file;
import java.io.File;
//给定一个目录,列出此目录的全部文件,包括子文件夹的文件
public class ListDirection {
public static void main(String[] args) {
//在使用File类指定路径的时候,尽量使用File.separator进行分割
File file=new File("d:"+File.separator+"javase");
print(file);
}
private static void print(File file){//递归调用
if(null!=file){//判断对象是否为空
if(file.isDirectory()){//是目录
File []files=file.listFiles();//列出全部文件
if(null!=files){//判断此目录能否列出,因为有一些目录不能访问.如果没有判断,可能会抛出NullPointerException
for(File f:files){
print(f);//因为可能存在子目录,所以继续判断
}
}
}
else{
System.out.println(file);//不是目录,输出路径
}
}
}
/* 输出
d:\javase\Oracle学习.txt
d:\javase\Oracle笔记.doc
d:\javase\上善若水.txt
d:\javase\新建文件夹\demo.html
*/
}