File类对象可以代表一个路径, 此路径可以是文件也可以是文件夹, 该类方法可以对这个路径进行各种操作
File用来将文件或者文件夹封装成对象
方便对文件与文件夹的属性信息进行操作。
File对象可以作为参数传递给流的构造函数。
创建对象
给File类构造函数传一个String类型的路径就可以创建对象
路径分为两种: 绝对路径, 相对路径
绝对路径: 从盘符开始, 是一个固定的路径
相对路径: 不从盘符开始, 相对于某个位置. 在Eclipse中的Java工程如果使用相对路径, 那么就相对于工程根目录. cmd则相对应于当前目录.
常用方法 boolean exists() 判断是否存在 boolean isAbsolute(); 是否是绝对路径 boolean isDirectory(); 是否是文件夹 boolean isFile(); 是否是文件 boolean isHidden(); 是否是隐藏 getAbsolutePath(); 获取绝对路径 getFreeSpace(); 获取当前盘符剩余空间 getTotalSpace(); 获取当前盘符总空间 getUsableSpace(); 获取当前盘符可用空间 getParent()); 获取父级路径 getName()); 获取文件名 setReadable(false); 设置是否可读 setWritable(false); 设置是否可写 setExecutable(false); 设置是否可执行 canRead(); 是否可读 canWrite(); 是否可写 canExecute(); 是否可执行 setLastModified(); 设置文件的最后修改时间 lastModified(); 获取文件的最后修改时间 createNewFile() 创建文件 mkdir(); 创建文件夹(仅一级) mkdirs(); 创建文件夹(父级不存在也创建) renameTo(); 改名, 可以移动文件 delete() 删除, 文件可以直接删除, 文件夹只能删空的 length() 文件大小 String[] list() File[] listFiles()
String[] list
获取当前目录下的所有文件和文件目录,包括隐藏的,如果File封装的是一个文件,那么返回的数组为null,所以最好做一个判断
File[] listFiles();
获取的是当前目录下文件或者文件夹对应的对象
如果仅获取文件名称,就用list方法.如果还要获取文件的其他信息,最好使用listFiles.因为可以获取到文件对象,这样就可以通过文件对象的方法,获取到其他的内容,如文件大小,修改时间等
public class Test { /** * 从键盘接收一个文件夹路径,把文件夹中的所有文件以及文件夹的名字按层级打印, 例如: */ public static void main(String[] args) { File dir = getDir(); getLevelDir(dir,0); } public static File getDir() { Scanner sc = new Scanner(System.in); System.out.println("请输入文件夹路径:"); while(true) { String line = sc.nextLine(); //将录入的路径存储在line中 File dir = new File(line); if(!dir.exists()) { System.out.println("您输入的文件夹路径不存在,请重新输入一个文件夹路径:"); }else if(dir.isFile()) { System.out.println("您输入的是文件路径,请输入一个文件夹路径:"); }else { return dir; } } public static void getLevelDir(File dir,int lev) { File[] subFiles = dir.listFiles(); for (File subFile : subFiles) { for(int x = 0; x < lev; x++) { //定义层级目录,在根目录下的文件或文件夹加table键,多一级就多加一个table键 System.out.print(' '); } System.out.println(subFile); //将该目录的所有文件和文件夹都打印 if(subFile.isDirectory()) { //只要是文件夹就继续调用自己,并把层级目录+1 getLevelDir(subFile,lev + 1); } } } }
总结:
字节流
FileInputStream, FileOutputStream, 自定义数组拷贝文件
BufferedInputStream, BufferedOutputStream, 内置缓冲区拷贝文件
字符流
FileReader, FileWriter
InputStreamReader, OutputStreamWriter
BufferedReader, BufferedWriter
File
利用字符和字节流对文件进行操作