File(文件、路径)
public static void main(String[] args) throws IOException {
//构造方法 无法判断 路径是否存在
win下文件夹名称不区分大小写 文件与文件夹不能重名
File f = new File("D:\a"); //(文件/文件夹)对象
//File f = new File("D:" + File.separator + "a"); //多系统都能用
//File f2 = new File("a.txt"); //相对路径 当前项目路径
//File f3 = new File("D:\a","b\c.txt"); //(父路径, 子路径)
//File f4 = new File(f,"b.txt"); //(File对象, 文件路径)
String s1=File.pathSeparator; //系统 路径分隔符 win:分号 linux:冒号
String s2=File.separator; //系统 文件夹分隔符 win:\ linux:/
File file2=new File("src"); //相对路径
String path=file2.getAbsolutePath();//获取绝对路径
//F:javacodetooleclipseworkDay1224src
//判断功能
boolean flag = f2.createNewFile());//创建文件 是否成功 已存在不创建
boolean flag = f.mkdirs();//创建(多级)文件夹 是否成功 已存在不创建
boolean flag = f.delete();//删除文件/空文件夹 是否成功 不存在false
boolean flag = f.exists(); //判断文件或者文件夹是否存在
boolean flag = f.isAbsolute(); //判断File对象是否指向绝对路径
boolean flag = f.isDirectory(); //判断File对象是否是文件夹
boolean flag = f.isFile(); //判断File对象是否是文件
boolean flag = f.isHidden();//判断File对象是否有隐藏属性
//获取功能 修改名字功能
File file = f.getAbsoluteFile()); //返回绝对路径的File对象
String str = f.getAbsolutePath(); //返回File对象所指向的绝对路径
File file = f.getParent();
File file = f.getParentFile();
String name = f.getName(); //获取文件/文件夹的名称 "a"
String path = f.getPath(); //返回创建File对象时给的路径 "D:\a"
long time = f.lastModified(); //获取最后修改时间 毫秒值
//Date d = new Date(2514023311294L);
//System.out.println(d.toLocaleString());
long size = f.length(); //返回文件的字节数
boolean flag = f.renameTo(f2); //修改路径 为 指定File路径
//获取文件夹下的文件
String[] files = f.list(); //返回File对象下所有的文件和文件夹名称
File[] files = f.listFiles(); //返回File数组 无路径 报错 空指针异常
//File[] files=f.listFiles(new Myfilter()); //满足Myfileter()条件的
for (File f : files) {System.out.println(f.getName());}
File[] files = File.listRoots();//返回根目录:哪个盘
getFile(f);//调用 获取多级目录下符合条件的文件
deleteFile(f);//删除指定的目录及内容 需先删除所有子文件和子目录
}
public static void getFile(File dir){//获取多级目录下符合条件的文件
File[] files=dir.listFiles(new Myfilter()); //File过滤器 符合条件 进数组
System.out.println(dir+"文件夹"); //打印文件夹
for(File f:files){
if(f.isDirectory()){getFile(f);} //文件夹 继续获取
else{System.out.println(f);} //文件 打印
}
}
//自定义类继承FileFilter过滤器接口
public class Myfilter implements FileFilter {//过滤器实现类 点出抽象方法
@Override
public boolean accept(File pathname) { //pathname 每一个 文件名
if(pathname.isDirectory()){return true;} //文件夹直接放行
return pathname.getName().toLowerCase().endsWith(".java");
} //文件名 转小写 是否以.java结尾 true/false
}
//自定义类继承FilenameFilter过滤器接口
class MyFilter implements FilenameFilter{
public boolean accept(File dir, String name) {
return name.endsWith(".java");
}
}
File parent = new File("b");
File f3 = new File(parent,"c.txt");
if(!parent.exists()) {parent.mkdirs();}
System.out.println(f3.createNewFile());
public static void getFile(File file) {//获取多级目录下符合条件的文件
if(file.isDirectory()) {
File[] files = file.listFiles();
for (File f : files) {
if(f.isFile()) {//判断是否是文件对象
if(f.getName().endsWith(".java")){
System.out.println(f.getName());
}
}else if(f.isDirectory()){//是一个目录对象
getFile(f);
System.out.println(f.getName());
}
}
}
}
public static void deleteFile(File file) {//删除指定目录下所有文件和目录
if(file.isDirectory()) {
File[] files = file.listFiles();
for (File f : files) {
if(f.isFile()) {System.out.println(f.getName()); f.delete();}
else if(f.isDirectory()) {deleteFile(f);}
}
System.out.println(file.getName()); file.delete();//干掉自己
}
}
IO异常处理
public class Demo01 {
public static void main(String[] args) {
FileOutputStream fos=null;
try {
fos2 = new FileOutputStream("F:\java\a.txt");
fos2.write("你好,小猪佩奇".getBytes());
//System.out.println(2 / 0);
} catch (IOException e) {
e.printStackTrace();
throw new RuntimeException("文件写入失败,重试");
}finally{
try {
if(fos2!=null){
fos2.close();
}
} catch (IOException e) {
e.printStackTrace();
throw new RuntimeException();
}
}
method02();
}