程序员可通过File类在硬盘上操作文件和目录。File类只能表示文件/目录的信息(如名称、大小),不能用于文件的访问。
import java.io.File;import java.io.IOException;public class FileDemo { public static void main(String[] args) { /* * 假设在F盘下有一个文件Java * 由于/是转义字符,所以在路径中要用双斜杠 */ File file1=new File("F://Java"); //File类的构造函数 /* * File.separator用于设置分隔符 这样任何系统都认识中间的分隔符 */ File file11=new File("F:"+File.separator+"Java"); System.out.PRintln(file1.exists()); //判断文件/文件夹是否存在 true System.out.println(file11.exists()); //判断文件/文件夹是否存在 true File file2=new File("F://Java//IO//File"); if(!file2.exists()){ /* * 创建多级目录用mkdirs(),创建一级目录用mkdir() */ file2.mkdirs();//文件不存在,自动创建IO和File //file2.mkdir(); //仅仅创建IO } else{ file2.delete();//如果目录存在,删除文件夹File } /* * 判断是否是一个目录 * 如果是目录返回true,如果不是目录或者目录不存在返回false */ System.out.println(file1.isDirectory()); //true /* * 判断是否是一个文件 */ System.out.println(file1.isFile()); //false File file3=new File("F://Java//IO//File//日记1.txt"); //File file33=new File("F://Java//IO//File","日记1.txt"); //功能与上面的语句相同 System.out.println(file3.isFile()); //false if(!file3.exists()) try{ file3.createNewFile(); //自动添加异常处理 }catch(IOException e){ e.printStackTrace(); } else file3.delete(); System.out.println(file3.isFile()); //true /* * 常用的File对象的API */ //直接打印file1,打印的是file1.toString()的内容 System.out.println(file1); //F:/Java System.out.println(file1.getAbsolutePath());//功能与上面的语句相同 System.out.println(file1.getName());//打印最后的目录名 Java System.out.println(file1.getParent());//得到父目录的路径 F:/ System.out.println(file1.getParentFile());//功能与上面的语句相同 System.out.println(file3.getName()); //日记1.txt System.out.println(file3.getParent()); //F:/Java/IO/File System.out.println(file3.getParentFile()); }}import java.io.File;import java.io.IOException;/* * 列出File类的一些常用操作 比如过滤、遍历等操作 * 假设F盘下有一个文件夹名为java,java下有一文件夹名为IO * IO下有一文件夹名为new,还有一文件名为new.txt * new下有一文件夹名为new1,还有一文件名为new1.txt */class FileUtils { /** * 列出指定目录下(包括其子目录下)的所有文件 * @param dir * @throws IOException */ public static void listDirectory(File dir)throws IOException{ if(!dir.exists()){ throw new IllegalArgumentException("目录:"+dir+"不存在."); } //list()方法用于列出当前目录下文件名和文件夹名 String[] filenames=dir.list(); System.out.println("目录"+dir+"下的文件名和文件夹名:"); for(String f:filenames){ System.out.println(f); //不包含子目录下的文件名和文件夹名 } /*System.out.println("目录"+dir+"的子目录:"); for(String f:filenames){ System.out.println(dir+"//"+f); }*/ //该注释掉的内容与下面的listFiles()方法功能相同 //listFiles()方法用于返回子目录 File[] files=dir.listFiles(); System.out.println("目录"+dir+"的子目录:"); for(File file:files){ System.out.println(file); } System.out.println(); if(files!=null&&files.length>0){ //files!=null用来判断是否有子目录 for(File file:files){ if(file.isDirectory()){ //递归 System.out.println("将目录 "+file+" 传给listDirectory()进行递归:"); listDirectory(file); } } } }}public class FileUtilsTest{ public static void main(String[] args)throws IOException{ FileUtils.listDirectory(new File("F://Java")); }}运行结果:
目录F:/Java下的文件名和文件夹名:538685de0001832c00000000.rarIOxml字符编码目录F:/Java的子目录:F:/Java/538685de0001832c00000000.rarF:/Java/IOF:/Java/XMLF:/Java/字符编码将目录 F:/Java/IO 传给listDirectory()进行递归:目录F:/Java/IO下的文件名和文件夹名:newnew.txt目录F:/Java/IO的子目录:F:/Java/IO/newF:/Java/IO/new.txt将目录 F:/Java/IO/new 传给listDirectory()进行递归:目录F:/Java/IO/new下的文件名和文件夹名:new1new1.txt目录F:/Java/IO/new的子目录:F:/Java/IO/new/new1F:/Java/IO/new/new1.txt将目录 F:/Java/IO/new/new1 传给listDirectory()进行递归:目录F:/Java/IO/new/new1下的文件名和文件夹名:目录F:/Java/IO/new/new1的子目录:将目录 F:/Java/XML 传给listDirectory()进行递归:目录F:/Java/XML下的文件名和文件夹名:books.txtbooks.xml目录F:/Java/XML的子目录:F:/Java/XML/books.txtF:/Java/XML/books.xml将目录 F:/Java/字符编码 传给listDirectory()进行递归:目录F:/Java/字符编码下的文件名和文件夹名:目录F:/Java/字符编码的子目录:
新闻热点
疑难解答