java中File基础

本文详细介绍了Java中File类的基本操作,包括文件和文件夹的创建、删除、重命名等,并展示了如何读取和写入文件内容,以及设置文件属性。

文件的基本操作

public class Test {
    public static void main(String[] args)
    {
      File file=new File("hell.txt");
        //判断文件是否存在
        if(file.exists())
        {
              //删除文件
              file.delete();
//           //重命名
//            File nameto=new File("new_hello.txt");
//            file.renameTo(nameto);

            //文件的移动.但是只能在同一个分区之间移动比如(c盘)mac是一个整的分区不影响.
            //File to=new File("src/new_hello.txt");
            //file.renameTo(to);

            //跨分区的移动文件需要拷贝文件

            //判断文件是否是文件或者是否是文件夹
            System.out.println(file.isFile());
            System.out.println(file.isDirectory());

        }
        else {
            System.out.println("no exits");
            try {
                //创建新的文件
                file.createNewFile();
                System.out.println("文件已被成功创建");
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

    }

文件夹

public class Test {
    public static void main(String[] args)
    {
        //创建文件夹
        //该函数创建文件夹是最后一个.但之前的目录必须存在.及new_folder/one必须已经存在
//     File folder=new File("new_folder/one/two");
//        //创建文件夹并且返回boolean
//        //folder.mkdirs()可以创建多级目录
//        if(folder.mkdir())
//        {
//            System.out.println("创建成功");
//        }
//        else
//        {
//            if(folder.exists())
//            {
//                System.out.println("已经存在,不可创建");
//            }else
//            {
//                System.out.println("文件夹创建失败");
//            }
//        }
        //文件夹的重命名处于同一个分区.目标的文件或者文件夹已经存在,重命名也不会成功

        File folder=new File("new_folder");
        File newfolder=new File("new_folder_new");
        folder.renameTo(newfolder);
        //之前的代码已经创建new_folder/one/two目录.文件夹的重命名可以只改某一级.结果是
        //new_folder_new/one/two
        //删除文件夹时,必须保证该文件夹是空的.否则删除不成功


    }

File的其他属性

public class Test {
    public static void main(String[] args)
    {
        File file=new File("test.txt");
        //判断文件是否存在
        System.out.println("判断文件是否存在"+file.exists());
        //读取文件名称
        System.out.println("读取文件名称"+file.getName());
        //读取文件路径
        System.out.println("读取文件路径"+file.getPath());
        //读取文件绝对路径
        System.out.println("读取文件绝对路径"+file.getAbsolutePath());
        //获取文件父级路径.默认获得的是当前目录相对的父目录.创建的时候没有父目录.所以重新创建再获得
        System.out.println("获取文件父级路径"+new File(file.getAbsolutePath()).getParent());
        //获取文件大小
        System.out.println("获取文件大小"+file.length()+"byte");
        //判断文件是否隐藏
        System.out.println("判断文件是否隐藏"+file.isHidden());
        //判断文件是否可写
        System.out.println("判断文件是否可写"+file.canWrite());
        //判断文件是否可读
        System.out.println("判断文件是否可读"+file.canRead());
        //判断文件是否是文件夹
        System.out.println("判断文件是否是文件夹"+file.isDirectory());



    }
}

File读写属性设置

//可写
            file.setWritable(true);
            //可读
            file.setReadable(true);
            //只读
            file.setReadOnly();

简单的文件读写

 File file=new File("test.txt");
        try {
            //文件输入流字节流
            FileInputStream fileInputStream=new FileInputStream(file);
            //字符流
            InputStreamReader inputStreamReader=new InputStreamReader(fileInputStream,"UTF-8");
           //带缓冲的字符流
            BufferedReader bufferedReader=new BufferedReader(inputStreamReader);
            String line=null;
            while ((line=bufferedReader.readLine())!=null)
            {
                System.out.println(line);
            }
            bufferedReader.close();
            inputStreamReader.close();
            fileInputStream.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        try {
            //文件不存在的话会进行创建
            FileOutputStream fileOutputStream=new FileOutputStream("testnew.txt");
            OutputStreamWriter outputStreamWriter=new OutputStreamWriter(fileOutputStream,"UTF-8");
            BufferedWriter bufferedWriter=new BufferedWriter(outputStreamWriter);

            //每次写入都是覆盖的
            bufferedWriter.write("hell");
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
<think>我们正在处理一个关于JavaFile类使用指南的请求。根据引用内容,我们可以总结出以下关键点: 1. Files类(在java.nio.file包中)是Java 7引入的NIO 2.0的一部分,提供了丰富的文件操作方法(引用1)。 2. File类(在java.io包中)的基本使用,包括构造方法、判断方法(如isDirectory, isFile, exists)等(引用2)。 3. File类的递归删除文件操作示例(引用3)。 4. 异常处理与File类的结合使用(引用4)。 用户要求的是“Java 文件操作 File 类使用指南”,因此我们将重点放在java.io.File类上,同时可以提及java.nio.file.Files类作为更现代的替代。 回答结构: 1. 介绍File类(基本概念、作用) 2. 如何创建File对象(构造方法) 3. 常用方法(文件/目录属性判断、创建、删除、遍历等) 4. 示例代码 5. 注意事项(异常处理、性能等) 6. 与Files类的简单比较(作为补充) 同时,根据要求,需要生成相关问题。 注意:引用内容中有些是关于Files类的(NIO),但用户明确要求File类(java.io.File)。因此,我们以File类为主,但可以适当提及Files类作为更优选择。 根据引用2和引用3,我们可以提取以下信息: - 构造方法:File(String pathname) - 方法:isDirectory(), isFile(), exists(), delete(), listFiles() - 递归删除 根据引用4,异常处理很重要,所以在示例中要加入异常处理。 步骤: 1. 介绍File类 - File类代表文件和目录路径名的抽象表示。 - 注意:File类不仅可以表示文件,还可以表示目录。 2. 创建File对象 - 使用路径字符串创建:`File file = new File("pathname");` 3. 常用方法 - 判断文件/目录是否存在:exists() - 判断是否为目录:isDirectory() - 判断是否为文件:isFile() - 获取文件名:getName() - 获取绝对路径:getAbsolutePath() - 创建文件:createNewFile() (需要处理IOException) - 创建目录:mkdir() 或 mkdirs() (后者可以创建多级目录) - 删除文件或空目录:delete() - 列出目录下的文件和目录:list() 或 listFiles() - 获取文件长度:length() 4. 示例代码 - 包括创建文件、创建目录、删除文件、遍历目录等。 5. 注意事项 - 路径分隔符:使用File.separator或系统无关的写法(如使用/,Java支持跨平台转换)。 - 异常处理:很多方法会抛出IOException,需要进行异常处理。 - 删除目录:需要递归删除(如引用3所示)。 6. 与Files类的比较 - 提到Java 7引入了Files类(NIO.2),功能更强大,推荐在新项目中使用。 生成相关问题: 1. File类和Files类有什么区别? 2. 如何递归遍历目录? 3. 文件操作中常见的异常有哪些?如何处理? 下面开始组织回答。</think>### Java 文件操作 File 类使用指南 `java.io.File` 类是 Java 标准库中处理文件和目录路径的核心类,提供文件系统操作的基础功能。以下是关键使用指南: --- #### **1. 创建 File 对象** 通过路径字符串构造: ```java // 绝对路径 File file1 = new File("C:/test/a.txt"); // 相对路径(相对于项目根目录) File file2 = new File("data/config.properties"); // 父目录 + 子路径 File file3 = new File("C:/docs", "report.pdf"); ``` --- #### **2. 常用方法** | **方法** | **功能说明** | **示例** | |-------------------------|------------------------------------------|-----------------------------------| | `exists()` | 检查文件/目录是否存在 | `if (file.exists()) { ... }` | | `isFile()` | 判断是否为文件 | `file.isFile()` | | `isDirectory()` | 判断是否为目录 | `file.isDirectory()` | | `createNewFile()` | 创建新文件(需处理异常) | `file.createNewFile()` | | `mkdir()` / `mkdirs()` | 创建单级/多级目录 | `new File("a/b/c").mkdirs()` | | `delete()` | 删除文件或空目录 | `file.delete()` | | `listFiles()` | 获取目录下所有文件对象 | `File[] files = dir.listFiles()` | | `length()` | 获取文件大小(字节) | `long size = file.length()` | | `getAbsolutePath()` | 获取绝对路径 | `file.getAbsolutePath()` | --- #### **3. 关键操作示例** **① 递归删除目录**(参考引用[3]) ```java public static void deleteDirectory(File dir) { if (dir.isDirectory()) { for (File sub : dir.listFiles()) { deleteDirectory(sub); // 递归删除子项 } } dir.delete(); // 删除当前文件/空目录 } ``` **② 遍历目录树** ```java public static void listFiles(File dir) { if (dir.isDirectory()) { for (File f : dir.listFiles()) { System.out.println(f.getName()); if (f.isDirectory()) listFiles(f); // 递归遍历 } } } ``` **③ 安全创建文件**(异常处理参考引用[4]) ```java try { File newFile = new File("data.log"); if (newFile.createNewFile()) { System.out.println("文件创建成功"); } } catch (IOException e) { System.err.println("创建失败: " + e.getMessage()); } ``` --- #### **4. 注意事项** - **路径分隔符**:使用 `File.separator` 替代硬编码 `\` 或 `/` 保证跨平台兼容性 - **异常处理**:文件操作需捕获 `IOException` 或 `SecurityException`(参考引用[4]) - **性能局限**: - `listFiles()` 在大型目录下可能低效 - 文件属性(如修改时间)需单独调用方法,非实时更新 - **替代方案**:Java 7+ 推荐使用 `java.nio.file.Files` 和 `Paths`(NIO.2 API),功能更强大(参考引用[1]) --- #### **5. File vs. Files 类** | **特性** | `java.io.File` | `java.nio.file.Files` (NIO.2) | |------------------|----------------------------------|-------------------------------------| | 引入版本 | Java 1.0 | Java 7+ (NIO.2) | | 文件复制 | 需手动流操作 | `Files.copy(source, target)` | | 文件属性 | 基础属性 | 支持 POSIX/ACL 等高级属性 | | 目录遍历 | 递归实现复杂 | `Files.walkFileTree()` 自动递归 | | 原子操作 | 不支持 | 支持原子移动/替换 | > 💡 **建议**:新项目优先使用 NIO.2 的 `Files` 类(引用[1]),遗留系统可继续用 `File`。 --- ### 相关问题 1. `File` 类的 `delete()` 方法为何有时无法删除目录?如何解决? 2. 如何用 NIO.2 的 `Files` 类实现文件复制和移动? 3. 递归遍历目录时如何避免 `StackOverflowError`(引用[4])? 4. Java 文件操作中常见的 `IOException` 类型有哪些?如何针对性处理? [^1]: Java 8 中的 Files 类详解:高效文件操作指南 [^2]: File类常见成员方法使用示例 [^3]: 递归删除文件的经典实现 [^4]: Java异常处理与File类深度探索
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值