注意:文件和文件夹都是用 File 代表
1,创建一个文件对象
使用绝对路径或者相对路径创建 File对象
public class AtWill {
public static void main(String[] args) {
// 绝对路径
File f1 = new File("H:\\码云project1");
System.out.println("f1的绝对路径:" + f1.getAbsolutePath());
// 相对路径,相对于工作目录,如果在eclipse中,就是项目目录
File f2 = new File("test.txt");
System.out.println("f2的绝对路径:" + f2.getAbsolutePath());
// 把f1作为父目录创建文件对象(常用)
File f3 = new File(f1, "test.txt");
System.out.println("f3的绝对路径:" + f3.getAbsolutePath());
}
}
2,文件常用方法1
注意1: 需要在H:\\码云project\\gogo\\确实存在一个lala1.txt,才可以看到对应的文件长度、修改时间等信息
注意2: renameTo方法用于对物理文件名称进行修改,但是并不会修改File对象的name属性。
public class AtWill {
public static void main(String[] args) {
File file = new File("H:\\码云project\\gogo\\lala1.txt");
System.out.println("当前文件是:" +file);
// 文件是否存在
System.out.println("判断是否存在:"+file.exists());
// 是否是文件夹
System.out.println("判断是否是文件夹:"+file.isDirectory());
// 是否是文件(非文件夹)
System.out.println("判断是否是文件:"+file.isFile());
// 文件长度
System.out.println("获取文件的长度:"+file.length());
// 文件最后修改时间
long time = file.lastModified();
Date d = new Date(time);
System.out.println("获取文件的最后修改时间:"+d);
// 设置文件修改时间为1970.1.1 08:00:00
file.setLastModified(0);
// 修改后——》该文件的最后修改时间属性,会修改
long time6 = file.lastModified();
Date d6 = new Date(time6);
System.out.println("修改了最后修改时间后,最后修改时间属性变为:"+d6);
// 文件重命名(lala1——》lala6)
File f2 =new File("H:\\码云project\\gogo\\lala.text");
file.renameTo(f2);
// 修改后——》该文件名属性,并不会修改
System.out.println("修改了文件名后,文件名属性变为:"+file);
}
}
3,文件常用方法2
public class TestFile {
public static void main(String[] args) throws IOException {
File f = new File("d:/LOLFolder/skin/garen.ski");
// 以字符串数组的形式,返回当前文件夹下的所有文件(不包含子文件及子文件夹)
f.list();
// 以文件数组的形式,返回当前文件夹下的所有文件(不包含子文件及子文件夹)
File[]fs= f.listFiles();
// 以字符串形式返回获取所在文件夹
f.getParent();
// 以文件形式返回获取所在文件夹
f.getParentFile();
// 创建文件夹,如果父文件夹skin不存在,创建就无效
f.mkdir();
// 创建文件夹,如果父文件夹skin不存在,就会创建父文件夹
f.mkdirs();
File f = new File("H:\\码云project1\\test3");
// 创建一个空文件,如果父文件夹skin不存在,就会抛出异常
f.createNewFile();
// 所以创建一个空文件之前,通常都会创建父目录
f.getParentFile().mkdirs();
try {
f.createNewFile();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// 列出所有的盘符c: d: e: 等等
File[] sss = f.listRoots();
for(File file2 : sss) {
System.out.println(file2);
}
// 刪除文件
f.delete();
// JVM结束的时候,刪除文件,常用于临时文件的删除
f.deleteOnExit();
}
}
4,练习-遍历文件夹1
一般说来操作系统都会安装在C盘,所以会有一个 C:\WINDOWS目录。
遍历这个目录下所有的文件(不用遍历子目录)
找出这些文件里,最大的和最小(非0)的那个文件,打印出他们的文件名
注: 最小的文件不能是0长度
public class AtWill {
public static void main(String[] args) {
File file = new File("C:\\WINDOWS");
File[] files = file.listFiles();
File max = null;
File min = null;
// 取出一个字节大小大于0的文件,用于作为判断最大或最小初始文件
for(File f : files) {
if(f.length() != 0) {
max = f;
min = f;
break;
}
}
for(int i=0; i<files.length; i++) {
if(max.length() < files[i].length()) {
max = files[i];
}
}
for(int i=0; i<files.length; i++) {
if(min.length() > files[i].length() && files[i].length()!=0) {
min = files[i];
}
}
System.out.println("最大的文件是:"+max+" ,其字节大小是"+max.length());
System.out.println("最小的文件是:"+min+" ,其字节大小是"+min.length());
}
}
5,练习-遍历子文件夹1(递归)
public class AtWill {
public static void main(String[] args) {
File file = new File("H:\\码云project");
File f[] = file.listFiles();
show(f);
}
public static void show(File dir[]) {
if (dir == null) {
return;
} else {
for (File fi : dir) {
if (fi.isDirectory()) {
show(fi.listFiles());
}
if (fi.isFile()) {
System.out.println(fi.getName());
}
}
}
}
}
参考来源于:
http://how2j.cn/k/io/io-file/345.html?p=48616