java021
file讲解:文件和目录路径名的抽象表示形式
IO流操作的是数据,而数据一般是以文件的表现形式。
File类:用来将文件或者文件夹封装成对象
方便对文件与文件夹的属性信息进行操作
file对象可以作为参数传递给流的构造函数
File类常见的方法:
1. 文件的创建:
boolean createNewFile():在指定位置下创建文件,如果该文件已经存在,则不创建,
返回false.和输出流不一样,输出流对象一建立创建文件,而且文件已经存在。
boolean mkdir():创建文件夹
boolean mkdirs():创建多级文件夹
2. 删除文件:
boolean delete():删除失败返回false,如果文件正在被使用,则删除不了
void deleteOnExit() 在程序退出时删除指定文件。
3. 判断:
boolean exists():文件是否存在
因为仅仅通过File file = new File("1.txt");中的1.txt是不能判断
file是否是文件还是文件夹,因为1.txt可以作为文件还是文件夹的名称使用
isFile():判断是否是文件,前提条件要先createNewFile创建
isDirectory():判断是否是目录,前提要先mkdir,mkdirs创建
exists():测试此抽象路径名表示的文件或目录是否存在。前提条件要先createNewFile创建
isHidden():判断是否是隐藏文件;
isAbsolute():判断是否是绝对路径。
3. 获取信息:
getPath():获取路径
getAbsolutePath():获取绝对路径
getPerent():获取绝对路径中的父目录,如果获取的是相对路径,返回null,
如果相对路径中有上一层目录那么该目录就是返回的结果。
listRoots():返回系统的盘符:c:
d:..
list(“目录”):列出所有在该目录下的文件和文件夹(包括隐藏文件)
假如“目录”是文件类型则会抛异常(空指针,因为文件没有目录就没有包含其他文件
或文件夹当遍历时就会出现异常)
list(FilenameFilter filter):列出通过了过滤器的文件
4.修改:
file1.renameTo(file2)://此方法类似于剪切,但是假如在目标中有被重名的文件那么会重命名不成功
5.遍历文件夹
listFile中存在递归:
· package xyxysjxy.io.file;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.FilenameFilter;
import java.util.ArrayList;
import java.util.List;
public class FileTest1
{
public static void main(String[]
args) throws Exception {
method6();
}
public static void method6() throws Exception
{
File file = new File("I:\\tupian" );
List<File> files = new ArrayList<File>();
listMenus(files, file);
System. out.println(files.size());
FileWriter fw = new FileWriter("I:\\tupian\\1.txt" );
BufferedWriter bw = new BufferedWriter(fw);
for (File f : files) {
bw.write(f.getAbsolutePath());
bw.newLine();
bw.flush();
}
}
// 列出文件夹的清单文件
public static void listMenus(List<File>
filess, File file) {
if (file.isDirectory()) {
File files[] = file. listFiles();
if (files != null &&
files.length != 0) {
for (File f : files) {
if (f.isFile()) {
filess.add(f);
} else {
listMenus(filess, f);
}
}
}
filess.add(file);
}
}
// 目录的删除,写递归啊,觉得就应该把要递归语句当作已经完成了。继续写接下来要执行的语句
public static void deleteDirFiles(File
file) {
if (file.isDirectory()) {
File files[] = file. listFiles();
if (files != null &&
(files.length != 0)) {
for (File f : files) {
if (f.isFile())
System. out
.println(file.toString() + "dir" +
f.delete());
else
deleteDirFiles(f);
}
System. out.println(file.toString() + "dir" +
file.delete());
} else
System. out.println(file.toString() + "dir" +
file.delete());
}
}
// 递归调用遍历文件
public static void diGui(File
file, int level) {
if (file.isDirectory()) {
System. out.println(cengJi(level++) + file);
File files[] = file. listFiles();
if (files != null &&
(files.length != 0))
for (File file2 : files) {
diGui(file2, level);
}
}
System. out.println(cengJi(level++) + file);
level--;
}
public static String
cengJi(int level) {
StringBuilder sb = new StringBuilder();
for (int l
= 0; l < level; l++)
sb.append( " ");
return sb.toString() + "|--" ;
}
public static void method5() throws Exception
{
File file1 = new File("F:\\" );
// String files[] = file1.list();
// File files[] = file1.listFiles();
String files[] = file1.list( new FilenameFilter()
{
@Override
// 接口回调方式: dir是this,name是文件名(在该目录下的通过fs.list())
public boolean accept(File
dir, String name) {
System. out.println("dir:" +
dir + "name:" + name);
if (name.endsWith(".mp3" ))
{
return true ;
}
return false ;
}
});
for (String file : files) {
System. out.println("file:" +
file);
}
}
public static void method4() throws Exception
{
File file1 = new File("e:\\1.txt" );
// file1.createNewFile();
File file2 = new File("f:\\2.txt" );
// 此方法类似于剪切,但是假如在目标中有被重名的文件那么会重命名不成功
System. out.println(file2.renameTo(file1));
}
public static void method3() throws Exception
{
File file1 = new File("f:\\a\\1.txt" );
// file1.createNewFile();// 必须是已经存在的路径
// file1.mkdirs ();
System. out.println(file1.exists());
System. out.println(file1.isFile());
System. out.println(file1.isDirectory());
System. out.println(file1.isAbsolute());
}
public static void method2() throws Exception
{
File file1 = new File("f:\\a\\b\\c" , "1.txt");
file1.mkdirs();
file1.createNewFile();
// file1.deleteOnExit();
// file1.delete();
}
public static void method1()
{
File file1 = new File("f:\\a\\b\\c\\1.txt" );
File file2 = new File("f:\\a\\b\\c\\d" , "2.txt");
File file3 = new File("f:" +
File.separator + "a" +
File.separator
+ "b" + File.separator + "c" +
File.separator + "d"
+ File. separator + "e" , "3.txt" );
File d = new File("f:\\a\\b\\c\\d\\e\\f" );
File file4 = new File(d, "f.txt" );
sop(file1);
sop(file2);
sop(file3);
sop(file4);
}
public static void sop(File
file) {
System. out.println(file.toString());
}
}