首页 > 解决方案 > 写文本文件不起作用java

问题描述

这是我的项目架构:

建筑项目

我想在文件“file.txt”上写,我尝试使用BufferedWriterPrintWriter但它不能正常工作。

我的 BufferedWriter 代码:

ClassLoader classLoader = getClass().getClassLoader();
File file = new File(classLoader.getResource("FileTLV.txt").getFile());
    try{

        BufferedWriter writer = new BufferedWriter(new FileWriter(file));
        writer.write("I want to write a String");
        writer.close();

    }catch (IOException e) {
        e.printStackTrace();
    }

还有我的 PrintWriter 代码:

    ClassLoader classLoader = getClass().getClassLoader();
    File file = new File(classLoader.getResource("FileTLV.txt").getFile());
    try{

        PrintWriter writer = new PrintWriter(new FileWriter(file));
        writer.print("I want to print a String");
        writer.flush();
        writer.close();

    }catch (IOException e) {
        e.printStackTrace();
    }

代码执行没有任何错误。

标签: javaprintwriterbufferedwriter

解决方案


应用程序资源是只读的。你不能给他们写信。

如果您想覆盖您的应用程序资源,请将内容写入新位置(例如临时文件或用户主目录下的某个位置),并编写一些代码检查该文件,然后再返回您的内置应用资源。

此外,URL 的 getFile() 方法不会将 URL 转换为有效的文件名。它返回 URL 的路径和查询部分,所有百分比转义都完好无损,因此如果您从完整路径包含 URL 中不允许的任何字符的目录或 .jar 运行,则结果将不可用。应该避免这种方法。(方法名称来源于 java.net.URL 是 Java 1.0 中的一个类,而当 Java 1.0 发布时,大多数 URL 实际上确实引用了物理文件。)


推荐阅读