1、将文件系统中的文件或文件夹封装成对象,提供属性和方法对文件进行操作
2、方法:
creatNewFile();创建文件,若存在则不创建,返回false。(输出流则是有无都创建)
boolean mkdir();创建一级文件夹;mkdirs();创建多级文件夹
boolean delete();删除文件;deleteOnExit()程序结束前删除文件
boolean canExecute():是否可被执行;boolean exists():文件是否存在
boolean isFile():是否是文件;isDirectory():是否是文件夹
boolean isHidden():是否是隐藏文件;isAbsolute():路径是否是绝对路径
String getName():文件名;String getPath():相对路径
String getParent():绝对路径的父目录,无则返回null,有上一级则返回上一级
String getAbsolutePath():获取绝对路径
boolean renameTo(File dest);:对文件重命名为dest
String[] list():列出当前目录所有文件名。目录必须存在
File[] list(FileNameFilter filter):对指定文件进行过滤,需实现FileNameFilter文件名过滤器
File[] listFiles():获取当前文件夹下的文件和文件夹
/**
* File类
* @author Administrator
*
*/
import java.io.*;
public class FileDeom1
{
public static void main(String[] args)
{
consMethod();
}
//创建File对象
public static void consMethod()
{
//将a.txt封装成file对象,可以将已有的和未出现的文件或文件夹封装成对象
File f1 = new File("a.txt");
//第二种方式, 可以将文件名封装 好处 文件名可以为变量
File f2 = new File("c:\\abc","b.txt");
//第三种 将路径封装
File d = new File("c\\abc");
File f3 = new File(d,"c.txt");
sop("f1:" + f1);
sop("f2:" + f2);
sop("f3:" + f3);
//File.separator 是路径分割符 可以跨平台
File f4 = new File("c:"+File.separator +"abc" +File.separator +"zzz" + File.separator +"a.txt");
sop("f4:" + f4);
}
public static void sop(Object obj)
{
System.out.println(obj);
}
}
***************************************************邪恶的分割线**********************************************************************************************************************
import java.io.*;
/**
* File类常见方法:
* 1, 创建,
* boolean createNewFile(): 在指定位置创建文件,如果该文件已经存在,
* 则不创建,返回false。和输出流不一样,输出流对象一定建立创建文件。
* 而且文件已经存在,会覆盖。
*
* boolean mkdir(): 创建文件夹
*
* boolean mkdirs(); 创建多级文件夹
* 2, 删除。
* boolean delete(): 删除失败返回false 删除指定文件
* void deleteOnExit():在程序退出时删除指定文件。
*
* 3,判断。
* boolean existe(): 判断文件是否存在
* ifFile(): 判断是否是文件
* isDirectory(): 判断是否为文件夹
* isHidden(): 判断是否为隐藏文件
*
* 4 获取信息。
*
* getName();获取文件或目录的名称
* getPath();获取路径名 转换为路径字符串
* getParent(); 返回路径名父目录的路径名字符串,如果没有有返回null
*
* getAbsolutePath():获取绝对路径(返回字符串)
* lastModified(): 获取最后一次修改的时间
* length() 文件大小
*
* @author Administrator
*
*/
public class FileDemo2
{
public static void main(String[] args) throws IOException
{
//method_1();
//method_2();
//method_3();
//method_4();
//method_5();
method_6();
}
public static void method_1()throws IOException//调用底层要抛异常
{
//创建文件对象
File f = new File("file.txt");
//程序退出的时候删除指定文件 这里是对象
f.deleteOnExit();
//建立文件 返回boolean类型
//sop("create :" + f.createNewFile());
//删除指定文件 返回boolean类型
sop("delete: " + f.delete());
}
public static void method_2()
{
File f = new File("file.txt");
//判断文件是否存在
sop("existe:" + f.exists());
//判断文件是否能执行
//sop("execute:" + f.canExecute());
}
public static void method_3()
{
//创建文件夹, mkdir最多创建一级目录
File dir = new File("abc\\kk");
sop("mkdir: " + dir.mkdir());
//创建多级文件夹 dir.mkdirs()
//sop("mkdir: " + dir.mkdirs());
}
public static void method_4()
{
File f = new File("file.txt");
//判断文件对象是否是文件或者目录时,必须要先判断该文件
//对象的内容是否存在 通过,exists判断
//判断是否目录(文件夹)
sop("dir:" + f.isDirectory());
//判断是否是文件
sop("file" + f.isFile());
}
public static void method_5()
{
File f = new File("file.txt");
//获取相对路径
sop("path:" + f.getPath());
//获取绝对路径
sop("abspath" + f.getAbsolutePath());
//该方法返回的是绝对路径父目录,如果获取的是相对路径,返回null
sop("parent:" + f.getParent());
}
public static void method_6()
{
//建立对象
File f1 = new File("D:/Student/java/test/demo.txt");
File f2 = new File("D:/Student/java/test/demo2.txt");
//改变文件的名字 将demo.txt 变成demo2.txt
sop("rename: " + f1.renameTo(f2));
}
public static void sop(Object obj)
{
System.out.println(obj);
}
}
***************************************************邪恶的分割线**********************************************************************************************************************
import java.io.File;
//listRoots 列出可用的文件系统根。
//list 列出指定目录下的所有可用文件
//listFiles(FileFilter filter)
public class FielDemo3
{
public static void main(String[] args)
{
//listRootsDemo();
listDemo();
}
//列出机器里面的有效盘符
public static void listRootsDemo()
{
File[] files = File.listRoots();
for(File f: files)
{
System.out.println(f);
}
}
//c盘下的目录 相当于dos 下 的 dir指令,不过可以看到隐藏文件
public static void listDemo()
{
//只在c盘下
File f = new File("c:\\");
//调用list方法中的file对象必须封装了了一个目录,该目录必须存在
String[] names = f.list();
//for循环增强
for(String name : names)
{
System.out.println(name);
}
}
}
***************************************************邪恶的分割线**********************************************************************************************************************
/**
* 列出目录文件下 .java 的所有文件 文件名过滤
* @author Administrator
*
*/
import java.io.*;
public class FileDemo4
{
public static void main(String[] args)
{
method_1();
//method_2();
}
public static void method_1()
{
File dir = new File("D:\\Student\\java\\test");
// 将目录的文件给字符串数组 、、传的是匿名内部类
String[] arr = dir.list(new FilenameFilter()
{
public boolean accept(File dir, String name)
{
// return true;
/*
* if(name.endsWith(".bmp")) { return true; } return false;
*/
// endWith 方法 返回结尾是否是参数里的真假
return name.endsWith(".java");
}
});
System.out.println("len:" + arr.length);
// for循环增强 输出目录中文件
for (String name : arr)
{
System.out.println(name);
}
}
//第二种 使用listFiles 经常用这种
public static void method_2()
{
File dir = new File("D:\\Student\\java\\test");
File[] files = dir.listFiles();
for(File f : files)
{
System.out.println(f.getName() + ":" + f.length());
}
}
}
***************************************************邪恶的分割线**********************************************************************************************************************
/**
* 需求:列出指定目录下文件或者文件夹,包含子目录的内容。
* 也就是列出指定目录下所有内容(使用递归的方法)
* @author Administrator
*
*/
import java.io.*;
public class FileDemo5
{
public static void main(String[] args)
{
// 创建文件对象
File dir = new File("D:/Student/java/test");
showDir(dir);
}
public static void showDir(File dir)
{
// 提前打印出是哪个目录的
System.out.println(dir);
// 将文件对象传递给 文件数组 files
File[] files = dir.listFiles();
for (File f : files)
{
// 如果是目录 递归调用
if (f.isDirectory())
{
showDir(f);
} else
{
System.out.println(f);
}
}
}
}
***************************************************邪恶的分割线**********************************************************************************************************************
/**
* 需求:删除一个带内容的目录
* 删除原理:
* 在window中,删除目录是从里面往外删除的。
*
* 既然是从里面往外删除,就需要用到递归。
*
* @author Administrator
*
*/
import java.io.*;
public class FileDemo6
{
public static void main(String[] args)
{
File dir = new File("D:\\Student\\java\\Test2\\test");
removeDir(dir);
}
// 删除文件
public static void removeDir(File dir)
{
File[] files = dir.listFiles();
for (File f : files)
{
// 如果删除的是目录 那么递归调用删除方法
if (f.isDirectory())
{
removeDir(f);
}
// 如果是文件那么删除
else
{
System.out.println(f.toString() + "::" + f.delete());
}
// 一次递归结束 删除文件夹
System.out.println(dir + "::dir::" + dir.delete());
}
}
}
***************************************************邪恶的分割线**********************************************************************************************************************
/**
* 需求: 将一个指定目录下的java文件的绝对路径,存储到一个文本文件中。
*
* 建立一个java文件列表
*
* 思路:
* 1, 对指定的额目录进行递归。
* 2, 获取递归过程所有的java文件的路径。
* 3, 将这些路径存储到集合中。
* 4, 将集合中的数据写入到一个文件中。
*
* @author Administrator
*
*/
import java.io.*;
import java.util.*;
public class FileDemo7
{
public static void main(String[] args) throws IOException
{
//文件路径封装成对象
File dir = new File("D:/Student/java");
//创建集合
List<File> list = new ArrayList<File>();
fileToList(dir, list);
// System.out.println(list.size());
File file = new File(dir, "javalist.txt");
writeToFile(list, file.toString());
}
// 传递 参数 为: 一个是文件对象, 一个是容器list
public static void fileToList(File dir, List<File> list)
{
// 将所有文件对象给 文件数组 files
File[] files = dir.listFiles();
// 对文件数组进行遍历
for (File f : files)
{
// 判断是否目录
if (f.isDirectory())
{
// 如果是目录 递归调用
fileToList(f, list);
} else
// 不是目录0
{
// 获取名字 判断扩展名
if (f.getName().endsWith(".java"))
;
list.add(f);// 如果是java文件存入容器中
}
}
}
// 把容器中的数据写入到文件
public static void writeToFile(List<File> list, String javaListFile)
{
// 定义写入缓冲流
BufferedWriter bufw = null;
try
{
// 将缓冲流写入 这里包装了一下
bufw = new BufferedWriter(new FileWriter(javaListFile));
for (File f : list)
{
// 循环的将路径名赋值给 字符串 path
String path = f.getAbsolutePath();
// 写入文件
bufw.write(path);
// 换行
bufw.newLine();
// 刷新缓冲区
bufw.flush();
}
} catch (IOException e)
{
e.printStackTrace();
} finally
{
try
{
// 关闭流
bufw.close();
} catch (IOException e)
{
e.printStackTrace();
}
}
}
}
***************************************************邪恶的分割线**********************************************************************************************************************
改名字,把.java改成.jad
import java.io.File;
public class RemoveFileTest
{
public static void main(String[] args)
{
File source = new File("d:/jad");
File[] files = source.listFiles();
for(File f : files)
{
String name = f.getName();
String newName = name.replace(".java", ".jad");
File oldFile = new File(source,name);
File newFile = new File(source,newName);
boolean t =oldFile.renameTo(newFile);
System.out.print(t);
}
}
}