Java 中操作文件


Java 中通过  java.io.File类来对一个文件(包括目录)进行抽象的描述。注意,有 File 对象,并不代表真实存在该文件。

1. File 常用构造方法

我们先来看看 File类中的常见构造方法和常见用法。
在这里插入图片描述
代码示例如下:

import java.io.File;

public class FileDemo1 {
    public static void main(String[] args) {
        File pFile=new File("d:\\");
        //构造方法1
        File file=new File(pFile,"a.txt");
        System.out.println("文件1路径:"+file.getPath());

        //构造方法2【重点】
        File file2=new File("d:\\b.txt");
        System.out.println("文件2路径:"+file2.getPath());

        //构造方法3
        File file3=new File("d:\\","c.txt");
        System.out.println("文件3路径:"+file3.getPath());
    }
}

构造方法2是最重要的,经常使用。

2 常用方法

在这里插入图片描述

示例1:观察 get 系列的特点和差异

import java.io.File;
import java.io.IOException;

public class FileDemo2 {
    public static void main(String[] args) throws IOException {
        File file=new File(".../a.txt");
        System.out.println("文件名称:"+file.getName());
        System.out.println("文件相对路径(getPath):"+file.getPath());
        System.out.println("文件绝对路径:"+file.getAbsolutePath());
        System.out.println("文件标准路径:"+file.getCanonicalPath());
    }
}

getPath() VS getAbsolutePath() VS getCanonicalPath()

♥绝对路径时,三者一致。
♥相对路径时:

getPath() 是相对路径本身;
❣getAbsolutePath() 是项目目录 + 相对路径本身;
❣getCanonicalPath() 可以解析相对路径,得到争取的路径。

示例2:文件判断与创建

import java.io.File;
import java.io.IOException;

public class FileDemo3 {
    public static void main(String[] args) throws IOException {
        File file=new File("a.txt");
        System.out.println("文件是否存在"+file.exists());
        System.out.println("是否为文件夹"+file.isDirectory());
        System.out.println("是否为文件"+file.isFile());

        System.out.println();
        boolean result=file.createNewFile();//创建文件
        System.out.println("文件创建:"+result);
        System.out.println("文件是否存在"+file.exists());
        System.out.println("是否为文件夹"+file.isDirectory());
        System.out.println("是否为文件"+file.isFile());

        File file2=new File("b.txt");
        if(!file2.exists()){//文件不存在,可以创建文件
            System.out.println("创建文件:"+file2.createNewFile());
        }
        System.out.println("是否为文件夹:"+file2.isDirectory());
        System.out.println("是否为文件:"+file2.isFile());
    }
}

示例3:文件存在删除/不存在创建

import java.io.File;
import java.io.IOException;

public class FileDemo4 {
    public static void main(String[] args) throws IOException {
        //先得到一个file对象
        File file=new File("a.txt");
        //判断file对象是否存在
        if(file.exists()){
            //如果存在则删除对象
            boolean result=file.delete();
            System.out.println("文件删除:"+result);
        }else{
            //如果不存在则创建对象
            boolean result =file.createNewFile();
            System.out.println("新建文件:"+result);
        }
    }
}

示例4:观察 deleteOnExit

import java.io.File;
import java.io.IOException;

public class FileDemo5 {
    public static void main(String[] args) throws IOException, InterruptedException {
        File file=new File("a.txt");
        if(!file.exists()){
            //如果不存在,则新建
            System.out.println("新建文件:"+file.createNewFile());
        }
        System.out.println("开始删除文件");
        //删除文件
        file.deleteOnExit();
        Thread.sleep(5*1000);
    }
}

注意:程序运行结束后,文件被删除,但如果是人为退出程序,文件不会被删除。
程序发生异常退出,文件不会被删除。

示例5:观察目录的创建

import java.io.File;

public class FileDemo6 {
    public static void main(String[] args) {
        File file=new File(("mytest"));
        System.out.println("是否为文件夹:"+file.isDirectory());
        System.out.println("是否为文件:"+file.isFile());
        System.out.println();
        boolean result=file.mkdir();
        System.out.println("创建文件夹:"+result);
        System.out.println("是否为文件夹:"+file.isDirectory());
        System.out.println("是否为文件:"+file.isFile());
    }
}

运行结果:
在这里插入图片描述
mkdir只能创建一级目录
创建二级目录:

import java.io.File;

public class FileDemo6 {
    public static void main(String[] args) {
        File file=new File(("mytest/apps"));
        System.out.println("是否为文件夹:"+file.isDirectory());
        System.out.println("是否为文件:"+file.isFile());
        System.out.println();
        //boolean result=file.mkdir();//创建一个文件夹
        boolean result=file.mkdirs();//创建多级文件夹
        System.out.println("创建文件夹:"+result);
        System.out.println("是否为文件夹:"+file.isDirectory());
        System.out.println("是否为文件:"+file.isFile());
    }
}

运行结果:
在这里插入图片描述

示例6:观察文件重命名

import java.io.File;
import java.io.IOException;

public class FileDemo7 {
    public static void main(String[] args) throws IOException {
        //将a.txt重命名为b.txt
        File file=new File("a.txt");
        File tarfile =new File("b.txt");
        if(!file.isFile()){
            //先创建文件
            file.createNewFile();
        }
        //重命名文件
        boolean result=file.renameTo(tarfile);
        System.out.println("重命名结果:"+result);
    }
}

第一次运行结果:
在这里插入图片描述
第二次运行结果:
在这里插入图片描述
执行两次观察结果可知:如果文件不存在,那么可以重命名成功,反之则不成功。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java ,你可以使用 Apache POI 库来操作表格文件。Apache POI 提供了许多类和方法,可以帮助你读取、写入和操作各种类型的表格文件,如 Excel 文件(.xls 和 .xlsx)。 以下是一个简单的示例代码,演示了如何使用 Apache POI 在 Java 读取和写入 Excel 文件: ```java import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; public class ExcelManipulation { public static void main(String[] args) { String filePath = "path/to/your/excel/file.xlsx"; try { // 读取 Excel 文件 FileInputStream fis = new FileInputStream(filePath); Workbook workbook = new XSSFWorkbook(fis); Sheet sheet = workbook.getSheetAt(0); // 读取单元格数据 Row row = sheet.getRow(0); Cell cell = row.getCell(0); System.out.println(cell.getStringCellValue()); // 写入单元格数据 Cell newCell = row.createCell(1); newCell.setCellValue("Hello, World!"); // 保存修改后的 Excel 文件 FileOutputStream fos = new FileOutputStream(filePath); workbook.write(fos); fos.close(); System.out.println("Excel 文件操作成功!"); } catch (IOException e) { e.printStackTrace(); } } } ``` 在上面的示例,我们首先使用 `FileInputStream` 读取 Excel 文件,然后使用 `XSSFWorkbook` 创建一个工作簿对象,再通过 `getSheetAt()` 获取第一个工作表。接着,我们使用 `getRow()` 和 `getCell()` 获取指定行和列的单元格对象,并通过 `getStringCellValue()` 获取单元格的值。然后,我们使用 `createCell()` 创建一个新的单元格,并使用 `setCellValue()` 设置单元格的值。最后,我们使用 `FileOutputStream` 将修改后的工作簿写入到文件。 请注意,上述代码只是一个简单示例,实际使用可能需要进行更多的错误处理和数据校验。另外,你需要在项目引入 Apache POI 的相关依赖。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值