----------------------android培训、java培训、期待与您交流! ----------------------
File
File对象提供了两个获取路径分隔符(pathSeparator)和文件名称分隔符的静态方法(separator)
File里的creatNewFile如果文件存在则不创建。而输出流中,无论文件是否存在,都创建(如果想覆盖,加上布尔型的参数)。
// File创建文件和创建文件夹。
File file = new File("d:\\test.txt");//获得实例对象,如果不存在,并未创建
boolean a = file.createNewFile();
System.out.println(a);
File dir = new File("d:\\dir");
boolean b = dir.mkdir();//mkdirs可以创建多级目录。
System.out.println(b);
// 删除多级目录只能删除最内层文件,而且java删除不经过回收站
// 判断是文件还是文件夹,得先判断文件或文件夹是否存在。
File f = new File("d:\\haha.txt");
f.createNewFile();
System.out.println(f.exists());
System.out.println(f.isFile());
// File获取
File f = new File("Test\\abc.txt");
System.out.println(f.getAbsoluteFile());//绝对路径
System.out.println(f.getName());//文件名
System.out.println(f.getPath());//路径(f里放的什么就是什么)
System.out.println(f.getParent());//获取显式父目录
//获得所有盘符
File[] roots = File.listRoots();
for (File file : roots) {
System.out.println(file);
}
// 获得当前目录的子文件和文件夹对象(包含隐藏文件)
File dir = new File("c:\\1");
File[] files = dir.listFiles();//如果File对象中封装的文件夹不存在,或者是一个文件,listFiles返回的就是null,所以遍历此方法产生对象之前最好加上exists()和isDirectory()判断
for (File f : files) {
System.out.println(f);
}
//重命名,剪切
File f1 = new File("d:\\1.bmp");
File f2 = new File("d:\\test\\1.bmp");
f1.renameTo(f2);
过滤器://以后缀名过滤文件
File dir = new File("f:\\");
String[] names = dir.list(new SuffixFilter(".jpg"));
for (String name : names) {
System.out.println(name);
}
publicclass SuffixFilterimplements FilenameFilter {
private Stringsuffix;
public SuffixFilter(String suffix) {
super();
this.suffix = suffix;
}
@Override
publicboolean accept(File dir, String name) {
return name.endsWith(suffix);
//如果想过滤文件,得到文件夹,可以重写过滤器,返回dir.isDirectory()!
}
}
// 需求:列出指定目录下所有内容,包含着子目录中的内容。(递归)
//当一个功能被重复使用,而且每次调用时,传递的参数和上次的运行结果相关时,可以使用递归。递归使用的注意事项:必须要定义条件,一定要控制递归次数。
publicstaticvoid main(String[] args) {
File dir = new File("f:\\男人本色");
listAll(dir, 0);
}
publicstaticvoid listAll(File dir,int level) {
System.out.println(getSpace(level) + dir);
level++;
File[] files = dir.listFiles();
for (File file : files) {
if (file.isDirectory()) {
listAll(file, level);//递归。
} else
System.out.println(getSpace(level) + file);
}
}
privatestatic String getSpace(int level) {
StringBuilder sb = new StringBuilder();
for (int x = 0; x < level; x++) {
sb.append(" ");
}
return sb.toString();
}
// 需求:删除指定目录下所有内容 (递归)
publicstaticvoid main(String[] args) {
File dir = new File("f:\\1");
removeDir(dir);
}
publicstaticvoid removeDir(File dir) {
//列出指定目录下的所有文件对象
File[] files = dir.listFiles();
//遍历files数组中的文件对象,如果是文件夹,继续判断,直到是文件时,再进行删除。删除完后删除该文件夹
for (File file : files) {
if (file.isDirectory()) {
removeDir(file);
} else {
file.delete();
}
}
dir.delete();
}
// 需求:将指定目录下的所有的java文件的绝对路径存储到一个文本文件中。包含子目录中的java文件。
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileFilter;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
publicclass JavaFileListTest {
publicstaticvoid main(String[] args)throws IOException {
File dir = new File("d:\\java0813");
FileFilter filter = new FileFilter() {
@Override
publicboolean accept(File pathname) {
return pathname.getName().endsWith(".java");
}
};
List<File> list = new ArrayList<File>();
getFileList(dir, filter, list);
File dest = new File(dir,"javalist.txt");
writeFile(list, dest);
}
/**
*将集合中的file对象的信息写入到目标文件中。
*/
publicstaticvoid writeFile(List<File> list, File dest)throws IOException {
//创建流对象。
BufferedWriter bufw = null;
try {
bufw = new BufferedWriter(new FileWriter(dest));
//迭代集合。
for (File file : list) {
bufw.write(file.getAbsolutePath());
bufw.newLine();
bufw.flush();
}
} finally {
if (bufw !=null)
try {
bufw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
*对指定目录进行递归,将符合filter过滤条件的file对象存储到指定集合中。
*/
publicstaticvoid getFileList(File dir, FileFilter filter, List<File> list) {
File[] files = dir.listFiles();
if (files !=null) {
for (File file : files) {
if (file.isDirectory()) {
getFileList(file, filter, list);
} else {
if (filter.accept(file)) {
list.add(file);
}
}
}
}
}
}
----------------------android培训、java培训、期待与您交流! ----------------------