File
package fileDemo;
import java.io.File;
import java.io.FilenameFilter;
/**
* static File[] listRoots() 列出可用的文件系统根。
* String[] list() 返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录。
* String[] list(FilenameFilter filter) 返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中满足指定过滤器的文件和目录。
* File[] listFiles() 返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件。
* File[] listFiles(FileFilter filter) 返回抽象路径名数组,这些路径名表示此抽象路径名表示的目录中满足指定过滤器的文件和目录。
* File[] listFiles(FilenameFilter filter) 返回抽象路径名数组,这些路径名表示此抽象路径名表示的目录中满足指定过滤器的文件和目录。
*
**/
/**
* @author Administrator
*
*/
public class ListDemo {
public static void main(String[] args) {
//listRootDemo();
//listDemo();
//fileNameFilter();
//listFilesDemo();
}
/**
* File[] listFiles() 返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件。
*/
private static void listFilesDemo() {
File f1 = new File("F:\\cesi\\exam\\src");
File[] files=f1.listFiles();
for (File file : files) {
//只能得到文件的大小,不能得到文件夹的大小
System.out.println(file.getName()+"::"+file.length());
}
}
/**
* FileNameFilter过滤器
*/
private static void fileNameFilter() {
//创建File对象
File f1 = new File("F:\\cesi\\exam\\src\\com\\itheima");
//创建过滤器
String[] names=f1.list(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
//System.out.println("dir"+dir+"name::s"+name);
/*if (name.endsWith(".java")) {
System.out.println("name:: "+name);
}
return true;*/
return name.endsWith(".java");
}
});
//遍历数组
for (String string : names) {
System.out.println(string);
}
}
/**
* 列出该目录下所有的文件(包括不可见文件)
*/
private static void listDemo() {
//File f1 = new File("D:\\yyy");
//File f2 = new File("H:\\yyy");
File f3 = new File("D:\\yyy"); //返回null
String[] arr=f3.list(); //调用list方法的file对象必须是封装了一个目录,该目录必须存在(NullPointerException)
if (arr.length==0) {
System.out.println("该目录为空");
return;
}
for (String string : arr) {
System.out.println(string);
}
}
/**
* 列出系統有效盘符
*/
private static void listRootDemo() {
File[] list=File.listRoots();
for (File file : list) {
System.out.println(file);
}
}
}
package fileDemo;
import java.io.File;
import java.io.IOException;
/**
* File类的常见方法:
* 1、创建
* booleancreteNewFile();在制定位置创建文件,如果该文件已经存在,则不创建,返回false,
* 与输出流不一样,输出流对象一建立就会创建文件,而且文件已经存在,就会覆盖该文件。
* boolean mkdir(); 创建目录
* boolean mkdirs(); 创建多级目录
*2、删除
*boolean delete();删除此抽象路径名表示的文件或目录。如果此路径名表示一个目录,则该目录必须为空才能删除。
* 当且仅当成功删除文件或目录时,返回 true;否则返回 false.
* void deleteOnExit();在程序退出时删除
*3、判断
*boolean exists() 文件或目录是否存在
*boolean isFile() 测试文件是否是一个标准文件。
*boolean isHidden() 测试此文件是否是一个隐藏文件。
* boolean isAbsolute() 测试此抽象路径名是否为绝对路径名。
* boolean isDirectory() 测试是目录
*4、获取
*(与路径相关)
* File getAbsoluteFile() 返回此抽象路径名的绝对路径名形式。 file对象
* String getAbsolutePath() 返回此抽象路径名的绝对路径名字符串。 file.toString()
* String getPath() 将此抽象路径名转换为一个路径名字符串。相对路径
* File getParentFile() 返回此抽象路径名父目录的抽象路径名;如果此路径名没有指定父目录,则返回 null。
* 如:"tang\\a.txt" =>tang"a.txt",则返回null
* String getParent() 返回此抽象路径名父目录的路径名字符串;如果此路径名没有指定父目录,则返回 null。
* 如:"tang\\a.txt" =>tang(tang.toString()底层实现)"a.txt",则返回null
* String getName() 返回由此抽象路径名表示的文件或目录的名称。
* 如:"tang\\a.txt" =>a.txt"a.txt",则返回a.txt
*
*
* File getCanonicalFile() 返回此抽象路径名的规范形式。
* String getCanonicalPath() 返回此抽象路径名的规范路径名字符串。
* long getFreeSpace() 返回此抽象路径名指定的分区中未分配的字节数。
* long getTotalSpace() 返回此抽象路径名指定的分区大小。
* long getUsableSpace() 返回此抽象路径名指定的分区上可用于此虚拟机的字节数。
* long lastModified() 返回此抽象路径名表示的文件最后一次被修改的时间。
* long length() 返回由此抽象路径名表示的文件的长度。
*
*
* 5、修改
* boolean renameTo(File dest) 重新命名此抽象路径名表示的文件。
* */
public class MethodDemo {
public static void main(String[] args) throws IOException {
File f1 = new File("D:\\BaiduYunDownload\\黑马程序员_毕向东_Java基础视频教程第20天\\黑马程序员_毕向东_Java基础视频教程第20天\\黑马程序员_毕向东_Java基础视频教程第20天-01-IO流(File概述).avi");
File f2 = new File("D:\\BaiduYunDownload\\黑马程序员_毕向东_Java基础视频教程第20天\\黑马程序员_毕向东_Java基础视频教程第20天\\File概述.avi");
System.out.println(f1.renameTo(f2));
}
/**
* 修改文件名:只能修改文件
*/
private static void modify() {
File f1 = new File("a.txt");
File f2 = new File("tang.txt");
System.out.println(f1.renameTo(f2));
}
/**
* 获取子、父文件、目录名
*/
private static void returnFileName() {
//获取
File f1 = new File("tang\\a.txt");
System.out.println("File:"+f1.getParentFile()); //tang
System.out.println("String:"+f1.getParent()); //tang
System.out.println(f1.getName()); //a.txt
File f2 = new File("a.txt");
System.out.println("File:"+f2.getParentFile()); //null
System.out.println("String:"+f2.getParent()); //null
System.out.println(f2.getName()); //a.txt
}
/**
* 判断文件、目录
*/
private static void panduan() {
File f1 = new File("D:\\Reflect");
System.out.println(f1.exists());
//判断文件对象是否是文件或者目录的时候,必须先要判断文件对象是否存在
System.out.println(f1.isDirectory());
System.out.println(f1.isFile());
System.out.println(f1.isAbsolute());
System.out.println(f1.isHidden());
}
/**
* boolean delete() 删除此抽象路径名表示的文件或目录。如果此路径名表示一个目录,则该目录必须为空才能删除。
* 当且仅当成功删除文件或目录时,返回 true;否则返回 false.
*/
private static void delete() {
// 将D:\\tang.txt(文件夹)封装成对象
File f2 = new File("D:\\tang\\tang.txt");
File f3 = new File("D:\\tang");
File f4 = new File("D:\\tangddd");
System.out.println(f2.delete());
System.out.println(f3.delete());
System.out.println(f4.delete());
}
/**
* 判断文件、目录是否存在
*/
private static void test3() {
// File f1 = new File("a.txt");
File f2 = new File("b.txt");
// System.out.println(f1);
// 记住在判断文件对象是否是文件、目录的时候,必须要先判断该文件对象封装的内容是否存在
System.out.println(f2.exists());
System.out.println(f2.delete());
}
/**
* 创建文件、文件目录
*
* @throws IOException
*/
private static void test2() throws IOException {
// 将a.txt封装成对象
File f1 = new File("a.txt");
// 创建文件
boolean b = f1.createNewFile();
System.out.println(b);
System.out.println(f1);
// 将D:\\tang.txt(文件夹)封装成对象
File f2 = new File("D:\\tang\\tang.txt");
// 创建目录
boolean b1 = f2.mkdirs();
System.out.println(b1);
System.out.println(f2);
}
/**
* 封装文件对象,封装内容(文件、目录)、文件夹对象--分隔符
*/
private static void test1() {
// 将D:\\封装成file对象 File.separator目录分隔符
File f = new File("D:" + File.separator);
// 将a.txt封装成file对象
File f2 = new File("a.txt");
System.out.println(f);
System.out.println(f2);
}
}