Java File类

File类

File类
文件和目录路径名的抽象表示形式
File类既可以表示文件,也可以表示目录。
构造方法:
File(String pathname):根据一个路径得到File对象
File(String parent, String child):根据一个目录和一个子文件/目录得到File对象
File(File parent, String child):根据一个父File对象和一个子文件/目录得到File对象
创建功能
public boolean createNewFile():创建一个新的文件 如果存在这样的文件,会返回false
public boolean mkdir():创建文件夹 如果存在这样的文件夹,返回false。该方法只能创建单层目录 如果创建多层目录得一层一层创建
public boolean mkdirs():创建文件夹,如果父文件夹不存在,会帮你创建出来 可以创建多层目录 当然也可以创建单层目录
判断功能
public boolean isDirectory(): 判断是否是目录
public boolean isFile(): 判断是否是文件
public boolean exists(): 判断是否存在
public boolean canRead(): 判断是否可读
public boolean canWrite(): 判断是否可写
public boolean isHidden(): 判断是否隐藏
获取功能
public String getAbsolutePath(): 获取File对象的绝对路径
public String getPath(): 获取File对象的相对路径
public String getParent() 返回File对象的上级文件路径;如果此路径名没有指定父目录,则返回 null。
public File getParentFile() 返回此抽象路径名父目录的抽象路径名;如果此路径名没有指定父目录,则返回 null。
public long getTotalSpace() 返回此抽象路径名指定的分区大小。 返回总容量 单位字节
public long getFreeSpace() 返回此抽象路径名指定的分区中未分配的字节数。返回剩余容量 单位字节
public String getName(): 获取File对象的名称
public long length(): 获取长度。字节数
public long lastModified(): 获取最后一次的修改时间,毫秒值
public String[] list(): 获取指定目录下的所有文件或者文件夹的名称数组
public File[] listFiles(): 获取指定目录下的所有文件或者文件夹的File数组 ,实际上是将一个文件夹中的每个子文件和文件夹作为File对象存到一个File类型的数组中

 public static void main(String[] args) throws Exception {
        File f=new File("D:\\idea\\java code\\src\\learn\\IO\\classFile\\Test01.java");
        //此方法用来判断文件或者文件路径是否存在于硬盘
        System.out.println(f.exists());//true
        File f1=new File("D:\\1");
        System.out.println(f1.exists());
        File f2=new File("D:\\a\\b\\c\\d");
        //如果不存在该文件或者文件路径,创建它
        if(!f1.exists()){
            //创建文件路径
            //f1.mkdir();
            //创建该文件
            //f1.createNewFile();
        }
        if(!f2.exists()){
            //创建多重目录
            f2.mkdirs();
        }
    }

删除功能
public boolean delete():删除文件或者文件夹
这个方法在删除文件夹的时候,如果该文件夹中有子文件夹或者文件就不能删除,只能删除空文件夹,也可以由内层逐层删掉文件,再删文件夹。
Java中删除的文件在回收站是找不到的,所以在删文件夹或者文件夹前需要注意。

重命名功能
public boolean renameTo(File dest)
两种情况
如果dest对象传进来的文件路径与调用该方法的文件路径名相同的话就是更改文件名
如果dest对象传进来的文件路径名与调用该方法的文件路径名不同就是更改文件名,并剪切原文件。

//删除多级目录文件
public static void main(String[] args) {
        File deFile=new File("D:\\ccc");
        while (true){
            if(deFile.delete()==false){
                deleteFile(deFile);
            }else {
                break;
            }
        }
    }
    //该方法的缺陷:一遍只能删除最内层的文件
    //在主函数中对其进行循环,如果最外层的文件目录没有被删掉,就让该方法递归调用直至外层文件目录删除完毕
    private static void deleteFile(File deFile) {
        File[] files=deFile.listFiles();
        boolean flag;
        for (File f:files) {
           if(f.isFile()){
               f.delete();
           }else {
               flag=f.delete();
               if(flag==true){
                   break;
               }else {
                   deleteFile(f);
               }
           }

        }
    }
//判断文件夹中有没有“.jpg”文件,如果有将其转换成“.png”格式
public static void main(String[] args) {
        File Path=new File("D:\\图片");
        picFormat(Path);
    }

    private static void picFormat(File path) {
        File[] files=path.listFiles();//得到一个File类型的数组,存储是原文件目录的子目录与子文件
        for (File pic:files) {
            if(pic.isDirectory()){//循环判断File类型元素是文件目录还是文件
                picFormat(pic);
            }else {
                //getParent()方法可以的到该文件的上级路径,再与自己修改后的文件名相拼接,就会得到新的文件名。
                if(pic.getName().endsWith(".jpg")) {
                    pic.renameTo(new File(pic.getParent() + "\\" + pic.getName().substring(0, pic.getName().indexOf(".jpg")) + ".png"));
                }
            }
        }
    }
//使用递归找出某文件目录下的子文件目录,并将文件复制到另一个文件目录下
 public static void main(String[] args) throws IOException {
        File f=new File("D:\\code");
        //调用方法完成查找文件目录下的文件或者子目录
        search(f);

    }

    public static void search(File f) throws IOException {
        //判断File是否为文件,如果不是文件,让其继续递归
        if(f.isFile()){
            String path=f.getAbsolutePath();//定义原文件的路径
            FileInputStream fis=new FileInputStream(path);//将原文件路径传入字节输入流
            File file=new File("D:\\code1");//将被粘贴的文件路径封装
            File newFile=new File(file.getAbsolutePath()+File.separator+f.getName());//新的文件的文件路径是被粘贴的文件路径拼接上原来的文件名称
            if(!newFile.exists()){//判断新的文件是否存在于新的文件目录
                //没有存在,就创建其的多重目录
                file.mkdirs();
            }
            /*
                创建字节输出流,字节输出流的路径就是新的文件的文件路径。注意:字节输出流只能针对于文件路径传入,不能传入文件目录(文件夹的路径)
                如果传入文件夹的路径,那么就会报错 java.io.FileNotFoundException(拒绝访问)
             */
            FileOutputStream fos=new FileOutputStream(newFile);
            //读写操作(读取原文件的字节,写入新文件中)
            byte[] bytes=new byte[1024];
            int temp=0;
            while ((temp=fis.read(bytes))!=-1){
                fos.write(bytes,0,temp);
            }
            //刷新
            fos.flush();
            //关闭
            fis.close();
            fos.close();
            return;
        }
        //f有两种可能,f可能是文件,也可能是目录
        File[] fs=f.listFiles();
        //循环输出该文件目录的子目录或者子文件
        for (File subF:fs) {
            System.out.println(subF.getAbsolutePath());
            search(subF);
        }
    }
<think>首先,用户要求使用中文回答问题。问题主题是“java File”,所以我需要解释Java中的File。 关键点:回答完问题后,必须提出3-5个相关问题,并以“§§相关问题§§”开头。相关问题必须输出在回答的末尾,且不能缺少。第一行必须是完整的“§§相关问题§§”,不能换行分散。 示例格式显示: - 先回答问题(例如,解释快速排序并给出代码)。 - 然后以“§§相关问题§§”开头,列出3-5个问题。 所以,我的回答结构: 1. 解释Java File。 2. 在末尾,添加“§§相关问题§§”,然后列出3-5个相关问题。 现在,内容: - Java File:在Java中,Filejava.io包的一部分,用于表示文件和目录的路径名。它允许创建、删除、重命名文件和目录,以及查询文件属性(如大小、修改时间等)。但它不直接处理文件内容;对于内容操作,需要使用流FileInputStream或FileOutputStream。 我需要确保回答全面但简洁。 然后,相关问题:基于用户的问题“java File”,我应该提出相关问题来扩展知识或深化理解。例如: 1. Java File如何创建新文件? 2. FileFiles有什么区别? 3. 如何处理文件路径在Java中? 4. File的主要方法有哪些? 5. 为什么File被弃用或推荐使用其他? 用户指定3-5个,所以我准备3-5个。 输出格式: - 回答部分:用中文解释。 - 然后,直接添加“§§相关问题§§”,后面跟问题列表,每个问题以数字点开头(如1. ···)。 示例中是: §§相关问题§§ 1. ··· 2. ··· 3. ··· 所以,我必须严格遵守:第一行是“§§相关问题§§”,没有换行或分散。 最后,确保所有内容符合规则,否则无效。 大纲我的回答: 1. 解释Java File: - 定义:Filejava.io包中的一个,用于处理文件和目录的路径。 - 功能:可以创建、删除文件,检查文件是否存在,获取文件属性等。 - 注意:File不代表文件内容;对于读写,需要使用流。 - 可能给出一个简单代码示例(尽管用户没有指定,但示例中有代码,所以我应该包括一个)。 用户问题只是“java File”,没有指定代码,但示例中有代码,所以我包括一个简单代码片段来演示。 例如: ```java import java.io.File; public class FileExample { public static void main(String[] args) { File file = new File("example.txt"); if (file.exists()) { System.out.println("File exists!"); } else { System.out.println("File does not exist."); } } } ``` 然后,相关问题: 1. File的主要方法有哪些? 2. 如何在Java中读取文件内容? 3. FilePath有什么区别? 4. 为什么Java引入了Files? 5. 如何处理文件权限在Java中? 确保3-5个。 现在,用中文写回答。</think>Java File是`java.io`包中的一个核心,用于表示文件和目录的路径名。它不直接处理文件内容(如读写),而是提供方法来操作文件系统对象,例如创建、删除、重命名文件或目录,以及查询文件属性(如大小、修改时间、权限等)。File基于平台无关的路径字符串工作,但需要注意,它已部分被Java 7引入的`java.nio.file.Path`和`Files`取代,后者提供更现代、功能更丰富的API。 ### 基本用法示例: - 创建File对象:`File file = new File("path/to/file.txt");` - 常用方法: - `exists()`:检查文件或目录是否存在。 - `createNewFile()`:创建新文件(如果不存在)。 - `delete()`:删除文件目录。 - `isDirectory()`:判断是否为目录。 - `length()`:获取文件大小(字节)。 ```java import java.io.File; public class FileDemo { public static void main(String[] args) { File file = new File("test.txt"); try { if (file.createNewFile()) { System.out.println("文件创建成功!"); } else { System.out.println("文件已存在或创建失败。"); } } catch (Exception e) { e.printStackTrace(); } } } ``` 注意:File在处理文件内容时,需配合流(如`FileInputStream`或`FileWriter`)使用。在Java 7及以上,推荐使用`java.nio.file`包中的`Path`和`Files`,以提高性能和安全性。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值