Maven项目结构下 Resources目录下文件读取

import java.io.InputStream;
import java.util.PropertyResourceBundle;
import java.util.ResourceBundle;

/**
 * 读取配置文件中的值
 * Created by XJM on 2017/5/31.
 */
public class PropValue {

    private static String BASE_URL;
    static {
        ResourceBundle rb=null;
        try {
            InputStream inputStream = PropValue.class.getResourceAsStream("/boot.properties");
            rb = new PropertyResourceBundle(inputStream);
            BASE_URL=rb.getString("boot_url");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args){
        System.out.println(PropValue.BASE_URL);
    }
}

### 如何在 Maven 项目 resources 目录下创建文件Maven 项目中,`resources` 是用于存储静态资源(如配置文件、模板文件等)的标准目录。通常情况下,在开发过程中不建议直接通过程序修改 `resources` 中的内容,因为这些内容会被打包到最终的 JAR 或 WAR 文件中,而不会动态更新。 然而,如果确实需要在运行时向 `resources` 目录写入文件,则可以通过操作磁盘上的实际路径来实现这一目标。需要注意的是,这种方式仅适用于未被打包的应用场景;一旦应用被部署为 JAR/WAR 文件,`resources` 将不再是一个物理目录,而是位于类加载器管理的 ClassPath 中。 以下是具体方法: #### 方法一:基于绝对路径手动指定 可以先找到本地项目的 `resources` 所对应的磁盘位置,然后利用 Java IO 流完成文件的创建与写入工作。 ```java import java.io.File; import java.io.FileWriter; public class CreateFileInResources { public static void main(String[] args) throws Exception { String filePath = "src/main/resources/myfile.txt"; // 定义相对路径 File file = new File(filePath); if (!file.exists()) { // 如果文件不存在则创建 boolean created = file.createNewFile(); System.out.println("文件创建状态:" + (created ? "成功" : "失败")); try (FileWriter writer = new FileWriter(file)) { writer.write("这是新创建的文件内容!"); } } else { System.out.println("文件已存在"); } } } ``` 此代码片段会尝试在 `resources` 下新建名为 `myfile.txt` 的文件并写入一些初始数据[^1]。 #### 方法二:使用临时文件机制模拟 当无法直接访问源码中的 `resources` 路径时,另一种方式是借助临时文件技术,并将其复制回目标路径。 ```java import java.io.*; import java.nio.file.Files; import java.nio.file.StandardCopyOption; public class TempFileExample { public static void createTempAndMoveToResource() throws IOException { File tempFile = Files.createTempFile("temp", ".txt").toFile(); // 创建临时文件 try (BufferedWriter bw = new BufferedWriter(new FileWriter(tempFile))) { bw.write("我是来自临时文件的数据..."); } String targetFilePath = "src/main/resources/copied_temp_file.txt"; File destFile = new File(targetFilePath); if (!destFile.getParentFile().exists()) { destFile.getParentFile().mkdirs(); // 确保父级目录存在 } Files.copy(tempFile.toPath(), destFile.toPath(), StandardCopyOption.REPLACE_EXISTING); // 复制至目标地址 tempFile.deleteOnExit(); // 删除原始临时文件 } public static void main(String[] args) throws IOException { createTempAndMoveToResource(); } } ``` 上述例子展示了如何生成一个临时文件并将它移动到 `resources` 下面去[^2]。 --- ### 注意事项 - **环境依赖**:以上两种方案均假设当前正在执行构建前阶段的操作,即工程结构尚未经过编译压缩处理。 - **权限控制**:某些特殊环境下可能因安全策略限制而导致无法正常读写预期路径,请提前确认是否有足够的权限支持此类行为。 - **跨平台兼容性**:考虑到不同操作系统间对于路径分隔符(`/`, `\`)以及大小写的敏感度差异,在设计涉及文件系统的逻辑时应充分考虑这些问题的影响。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值