Saya memiliki file test.txt di folder sumber daya proyek saya, dan saya mencoba menulis Daftar string untuk itu, satu untuk setiap baris (dari kelas pengujian, jika itu penting).
Untuk beberapa alasan, meskipun tidak terkecuali dilempar atau ditangkap, saya sudah mencoba banyak hal tetapi saya tidak bisa menulisnya. Sebagai contoh:

Path p = Paths.get(ClassLoader.getSystemResource("test.txt").toURI());

try (BufferedWriter writer = Files.newBufferedWriter(p)) 
{
    for (String line : lines) writer.write(line);
} 
            
catch (IOException e) 
{
    e.printStackTrace();
}

Files.write(p, lines) juga tidak berfungsi. Saya bingung karena tidak ada kesalahan yang dilaporkan tetapi file tetap kosong. Saya juga memastikan jalur dikenali dengan p.toFile().exists(), dan itu mengembalikan true . Apa yang saya lewatkan?

0
Learner 5 Januari 2021, 15:42

3 jawaban

Jawaban Terbaik

Saya berasumsi Anda menjalankan ini dari IDE Anda?

IDE akan membangun proyek dan menyalin sumber daya bersama dengan file .class yang dikompilasi ke direktori keluaran. Saat memodifikasi salah satu sumber daya ini, file sumber daya yang disalin akan ditimpa, tetapi bukan file sumber daya sumber - saya berasumsi Anda sedang melihat ini sekarang dan melihat bahwa mereka masih terlihat sama. Selain itu, file sumber daya yang disalin mungkin akan ditimpa setiap kali Anda membangun proyek.

Petunjuk: keluarkan (cetak) jalur untuk memeriksa file mana yang sebenarnya Anda modifikasi.

2
Peter Walser 5 Januari 2021, 12:51

Pertama-tama, file di bawah direktori keluaran (direktori sumber daya yang dikompilasi) akan diubah. dan Anda harus menutup penulisnya

writer.close();
-1
salah djebbi 5 Januari 2021, 13:15

Jika Anda menggunakan maven, file di dalam src/main/resources akan disalin ke folder output target/classes/test.txt. Cetak jalur file Anda dan lihat jalur sebenarnya yang Anda gunakan.

1
J.P 5 Januari 2021, 12:58