File类的使用例程:
import java.io.File;
import java.io.IOException;
public class FileClassTest {
public static void main(String[] args) {
//File类型的引用变量f接收的对象就是abc.txt
File f = new File("D:\\test\\abc.txt"); //在java中 \\ 或者 / 表示文件的分隔符
//f1指的是file.txt,这种使用的少
// File f1 = new File("D:\\test", "inner\\file.txt");
File f1 = new File("D:\\test\\inner");
System.out.println(f.getName()); //获取文件名
System.out.println(f1.getName()); //获取当前的目录名
//获取当前文件的路径,new file时写的是绝对路径获取的就是绝对路径,写的是相对路径获取的就是相对路径
System.out.println(f.getPath());
//给文件或者文件夹重命名
f.renameTo(new File("D:\\test\\123.txt"));
File f2 = new File("D:\\test\\123.txt");
System.out.println(f2.exists()); // 判断文件或文件夹是否存在
File f3 = new File("D:\\test\\1.txt");
if(!f3.exists())
{
try {
f3.createNewFile(); //创建新的文件
} catch (IOException e) {
e.printStackTrace();
}
}
f3.delete(); //删除文件
File f4 = new File("D:\\test\\test1");
f4.mkdir(); //创建单层目录,如果想要创建多层目录就得一层一层地执行mkdir()
File f5 = new File("D:\\test\\a\\b\\c");
f5.mkdirs(); //可以一次性创建多层目录
File f6 = new File("D:\\test");
String[] str = f6.list(); //调用list方法返回的是当前文件夹的下的目录名和文件名
//用for each循环遍历字符串数组str
for(String s : str)
{
System.out.println(s);
}
}
}
练习:遍历d盘下的test文件夹,把test文件夹下所有的目录和文件全部遍历出来,不论层级有多深,都要全部遍历出来。
思路:用File类型的引用变量指向test文件夹,利用listFiles()返回文件夹下的子文件夹或者文件的file对象,即返回一个File类型的对象数组。利用递归方法把子文件夹内内的文件和文件夹都遍历出来。
程序代码如下:
import java.io.File;
//遍历d盘下的test文件夹,把test文件夹下所有的目录和文件全部遍历出来,不论层级有多深,都要全部遍历出来
//需要使用递归的方法来实现
public class FileClassPractice {
public static void main(String[] args) {
File f1 = new File("D:\\test");
new FileClassPractice().test(f1);
}
//递归遍历文件
public void test(File file) {
if(file.isFile())
{
System.out.println(file.getAbsolutePath() + " 是文件");
}
else
{
System.out.println(file.getAbsolutePath() + " 是文件夹");
//如果是文件夹,则该文件夹可能有子文件夹或者文件
File[] fs = file.listFiles(); //获取当前文件夹下的子文件夹或者文件的file对象
if(fs != null && fs.length > 0)
{
//用for each循环遍历File类型的数组fs,数组内的元素是file类型的对象
for(File f : fs)
{
test(f); //递归
}
}
}
}
}