【问题标题】:Write text file doesnt work java写文本文件不起作用java
【发布时间】:2018-06-07 15:00:29
【问题描述】:

这是我的项目架构:

Architecture Project

我想在文件“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();
    }

代码执行没有任何错误。

【问题讨论】:

  • 到底是什么问题?正在写入文件,对吧?
  • 您是否尝试过使用文件的绝对路径而不是简单的文件名
  • @f1sh 问题是没有文本写入文件
  • @RAZ_Muh_Taz 我可以从同一个 File 对象中读取文件的内容,所以我认为问题不在于 File 对象实例化
  • 你有没有抛出异常?

标签: java printwriter bufferedwriter


【解决方案1】:

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

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

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

【讨论】:

  • 谢谢它的工作。我使用 File 方法 createTempFile 创建一个临时文件,我现在可以在其中写入。
【解决方案2】:

只需使用来自 java.nio (Java 7+) 的Files.write

这是一个例子:

List<String> lines = Arrays.asList("line1", "line2");
Path file = Paths.get("filename.txt");
Files.write(file, lines, Charset.forName("UTF-8"));

还有什么非常棒的:

"该方法确保在所有字节都已被关闭时关闭文件 写入(或抛出 I/O 错误或其他运行时异常)。”

Files.write(filePathObj, content, StandardOpenOption.APPEND);

允许您附加到文件(看看不同的OpenOptions

总的来说,Files.nio 真的很有用,也可以用来阅读

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-03
    • 1970-01-01
    • 2016-05-04
    相关资源
    最近更新 更多