File类
解释:文件和目录路径名的抽象表示形式,建立File对象不会对文件系统产生影响。
程序-----file-------》文件/文件夹:通过File建立联系,而并不是读写文件操作,真正操作内容是通过IO流操作。
1. 两个常量
(1) 路径分隔符pathSeparator
(2) 名称分隔符 \(windows) /(linux)等。Separator
public class Demo01 {
public static void main(String[] args){
System.out.println(File.pathSeparator);//输出:;
System.out.println(File.separator);//输出:\
//路径表示形式
String path ="E:\\xp\\test\\2.jpg";
path = "E:"+File.separator+"xp"+File.separator+"test"+File.separator+"2.jpg";
System.out.println(path);
//推荐方式
path = "E:/xp/test/2.jpg";
}
}
2. 相对路径和绝对路径构造File对象
1.相对路径
* File(String parent,String child) ==File("E:/xp/test",2.jpg);
* File(File(parentd),String child) ==File(new File("E:/xp/test"),"2.jpg");
* 2.绝对路径
* File(String name);
public class Demo02 {
public static void main(String[] args){
String parentPath="E:/xp/test";
String name ="2.jpg";
//相对路径
File src = new File(parentPath,name);
src = new File(new File(parentPath),name);
//输出
System.out.println(src.getName());//2.jpg
System.out.println(src.getPath());//E:\xp\test\2.jpg
//绝对路径路径
src = new File("E:/xp/test/2.jpg");
System.out.println(src.getName());
System.out.println(src.getPath());
//没有盘符:以 user.dir 的路径构建
src = new File("test.txt");
System.out.println(src.getName());
System.out.println(src.getPath());
System.out.println(src.getAbsolutePath());//E:\workspace\IO\test.txt
}
}
3. 常用方法
1、文件名
getName()文件名、路径名
getPath()路径名
getAbsoluteFile()绝对路径所对应的File对象
getAbsolutePath()绝对路径名
getParent()父目录 ,相对路径的父目录,可能为null 如. 删除本身后的结果
2、判断信息
exists()
canWrite()
canRead()
isFile()
isDirectory()
isAbsolute():消除平台差异,ie以盘符开头,其他以/开头
3、长度 字节数 不能读取文件夹的长度
length()
4、创建、删除
createNewFile()不存在创建新文件,存在返回false
delete() 删除文件
staticcreateTempFile(前缀3个字节长,后缀默认.temp) 默认临时空间
staticcreateTempFile(前缀3个字节长,后缀默认.temp,目录)
deleteOnExit() 退出虚拟机删除,常用于删除临时文件
5、操作目录
mkdir() 创建目录,必须确保 父目录存在,如果不存在,创建失败
mkdirs() 创建目录,如果父目录链不存在一同创建
list() 文件|目录 名字符串形式
listFiles()
static listRoots() 根路径
public class Demo03 {
public static void main(String[] args){
//test1();
//test2();
// try {
// test3();
// } catch (IOException e) {
// e.printStackTrace();
// } catch (InterruptedException e) {
// e.printStackTrace();
// }
test5();
}
//子目录或者文件
public static void test5(){
String path = "E:/workspace/images";
File src = new File(path);//文件夹
if(src.isDirectory()){
System.out.println("==子目录|文件名==");
String[] listname = src.list();
for(String temp:listname)
System.out.println(temp);
}
System.out.println("==子目录|文件File==");
File[] listfile = src.listFiles();//完整路径
for(File file:listfile){
System.out.println(file.getAbsolutePath());
}
System.out.println("==过滤子文件==");
File[] listfiles = src.listFiles(new FilenameFilter(){//内部类
@Override
public boolean accept(File dir, String name) {
//System.out.println(dir.getAbsolutePath());
return new File(dir,name).isFile() && name.endsWith(".jpg");
}
});
for(File file:listfiles){
System.out.println(file.getAbsolutePath());
}
}
//操作目录
public static void test4(){
String path = "E:/workspace/images/a";
File src = new File(path);//文件夹
src.mkdir();//创建目录,必须确保 父目录存在,如果不存在,创建失败
src.mkdirs();//创建目录,如果父目录链不存在一同创建
}
//创建删除文件
public static void test3() throws IOException, InterruptedException{
//createNewFile() 不存在创建新文件
String path = "E:/workspace/images/1.jpg";
File src = new File(path);
if(!src.exists()){
boolean flag = src.createNewFile();//存在创建失败,返回false
System.out.println(flag?"成功":"失败");
}
//删除文件
boolean flag = src.delete();
System.out.println(flag?"成功":"失败");
// static createTempFile(前缀3个字节长,后缀默认.temp) 默认临时空间
// staticcreateTempFile(前缀3个字节长,后缀默认.temp,目录)
// deleteOnExit() 退出虚拟机删除,常用于删除临时文件
File temp = File.createTempFile("test", ".temp",new File("E:/workspace/images"));
Thread.sleep(10000);
temp.deleteOnExit();
}
//判断信息
public static void test2(){
//String path = "bg.jpg";
String path = "E:/workspace/images/bg.jpg";
File src = new File(path);
//是否存在
System.out.println("文件是否存在"+src.exists());
//是否可读写 canWrite() canRead();
System.out.println("文件是否可写"+src.canWrite());
//ifFile();
//isDirectory()
if(src.isFile()){
System.out.println("文件");
}else if(src.isDirectory()){
System.out.println("文件夹");
}else{
System.out.println("文件不存在");
}
System.out.println("字节"+src.length());
}
//文件名
public static void test1(){
//File src = new File("E:/workspace/images/bg.jpg");
File src = new File("bg.jpg");
System.out.println(src.getName());//返回名称
System.out.println(src.getPath());//如果是绝对路径返回完整路径,否则相对路径
System.out.println(src.getAbsolutePath());//返回完整路径
System.out.println(src.getParent());//返回上一级目录,如果是相对,则返回null
}
}
public class Demo03 {
public static void main(String[] args){
//test1();
//test2();
// try {
// test3();
// } catch (IOException e) {
// e.printStackTrace();
// } catch (InterruptedException e) {
// e.printStackTrace();
// }
test5();
}
//子目录或者文件
public static void test5(){
String path = "E:/workspace/images";
File src = new File(path);//文件夹
if(src.isDirectory()){
System.out.println("==子目录|文件名==");
String[] listname = src.list();
for(String temp:listname)
System.out.println(temp);
}
System.out.println("==子目录|文件File==");
File[] listfile = src.listFiles();//完整路径
for(File file:listfile){
System.out.println(file.getAbsolutePath());
}
System.out.println("==过滤子文件==");
File[] listfiles = src.listFiles(new FilenameFilter(){//内部类
@Override
public boolean accept(File dir, String name) {
//System.out.println(dir.getAbsolutePath());
return new File(dir,name).isFile() && name.endsWith(".jpg");
}
});
for(File file:listfiles){
System.out.println(file.getAbsolutePath());
}
}
//操作目录
public static void test4(){
String path = "E:/workspace/images/a";
File src = new File(path);//文件夹
src.mkdir();//创建目录,必须确保 父目录存在,如果不存在,创建失败
src.mkdirs();//创建目录,如果父目录链不存在一同创建
}
//创建删除文件
public static void test3() throws IOException, InterruptedException{
//createNewFile() 不存在创建新文件
String path = "E:/workspace/images/1.jpg";
File src = new File(path);
if(!src.exists()){
boolean flag = src.createNewFile();//存在创建失败,返回false
System.out.println(flag?"成功":"失败");
}
//删除文件
boolean flag = src.delete();
System.out.println(flag?"成功":"失败");
// static createTempFile(前缀3个字节长,后缀默认.temp) 默认临时空间
// staticcreateTempFile(前缀3个字节长,后缀默认.temp,目录)
// deleteOnExit() 退出虚拟机删除,常用于删除临时文件
File temp = File.createTempFile("test", ".temp",new File("E:/workspace/images"));
Thread.sleep(10000);
temp.deleteOnExit();
}
//判断信息
public static void test2(){
//String path = "bg.jpg";
String path = "E:/workspace/images/bg.jpg";
File src = new File(path);
//是否存在
System.out.println("文件是否存在"+src.exists());
//是否可读写 canWrite() canRead();
System.out.println("文件是否可写"+src.canWrite());
//ifFile();
//isDirectory()
if(src.isFile()){
System.out.println("文件");
}else if(src.isDirectory()){
System.out.println("文件夹");
}else{
System.out.println("文件不存在");
}
System.out.println("字节"+src.length());
}
//文件名
public static void test1(){
//File src = new File("E:/workspace/images/bg.jpg");
File src = new File("bg.jpg");
System.out.println(src.getName());//返回名称
System.out.println(src.getPath());//如果是绝对路径返回完整路径,否则相对路径
System.out.println(src.getAbsolutePath());//返回完整路径
System.out.println(src.getParent());//返回上一级目录,如果是相对,则返回null
}
}
4. 输出子孙级目录|文件的名称(绝对路径)
* 1、listFiles()
* 2、递归
* static listRoots() 根路径
public class Demo04 {
public static void main(String[] args) {
String path = "E:/workspace/images";
File file = new File(path);
//printname(file);
File[] roots = file.listRoots();//输出盘符
System.out.println(Arrays.toString(roots));
}
public static void printname(File dir){
if(null == dir || !dir.exists()){
return ;
}
System.out.println(dir.getAbsolutePath());
if(dir.isDirectory()){
for(File sub:dir.listFiles())
printname(sub);
}
}
}