簡體   English   中英

Java - FileOutputStream 覆蓋文件,但它似乎沒有改變

[英]Java - FileOutputStream overwrites file, but it doesn't seem to change

因此,當我使用FileOutputStream寫入文件時,它確實會更改文件的內容,就像我使用InputStream讀取它時一樣,我得到了我所寫的內容。 但是,當我在資源目錄中打開該文件時,它仍然和以前一樣,盡管它被更改了。

我的代碼:

import java.io.*;
import java.net.URISyntaxException;
import java.net.URL;

public class Program {

    public static void main(String[] args) throws URISyntaxException, IOException {
        String edit = "Edit2";
        String fileName = "/File.txt";
        URL url = Object.class.getResource(fileName);

        try (FileOutputStream fos = new FileOutputStream(new File(url.toURI()))) {
            fos.write(edit.getBytes());
        }

        try(InputStream is = Object.class.getResourceAsStream(fileName)) {
            StringBuilder sb = new StringBuilder();
            int read = is.read();
            while (read != -1) {
                sb.append((char) read);
                read = is.read();
            }
            System.out.println(sb.toString());
        }

    }
}

順便說一下,我使用的是 IntelliJ IDEA,並且在資源文件夾中有這個文件。 它只是一個內容Not changed的 .txt 文件,所以我可以知道它是否被覆蓋。

我想知道這個問題是否與代碼有關,如果是,我該如何解決?

聽起來很傻,但在打開文件之前嘗試刷新文件夾。

原來我不應該使用Object.class.getResource(fileName)從類路徑打開文件,而是直接實例化一個 File 對象。

import java.io.*;

public class Program {
    public static void main(String[] args) throws IOException {
        String edit = "Edit";
        String fileName = "resources/File.txt";
        File file = new File(fileName);

        try (FileOutputStream fos = new FileOutputStream(file)) {
            fos.write(edit.getBytes());
        }

        try (InputStream is = new FileInputStream(file)) {
            StringBuilder sb = new StringBuilder();
            int read = is.read();
            while (read != -1) {
                sb.append((char) read);
                read = is.read();
            }
            System.out.println(sb.toString());
        }
    }
}

正如 CHN 指出的那樣,我認為這與路徑有關。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM