[英]File Write in resource folder in jar
我的 java swing 項目中有一個資源文件夾(文件),其中包含一個文本文件(users.txt),我正在將數據讀取和寫入該文本文件。 當我將它導出為 jar 文件時,從該文件中讀取是可以的,但在文件中寫入是有問題的。 我正在以這種方式從文件中讀取
InputStream in1 = getClass().getResourceAsStream("/files/users.txt");
BufferedReader reader1 = new BufferedReader(new InputStreamReader(in1));
在 jar 文件中讀取完全正常,並在代碼下面的同一個文件中寫入(這是 jar 文件的問題)
File file = new File("src/files/users.txt");
FileWriter fw = new FileWriter(file,true);
fw.write(data+"\n");
fw.close();
請幫助我如何使用 jar 文件寫入資源文件夾中的文件。 謝謝!
正如評論已經說過的,JAR 中的文件被認為是只讀的。
您必須在某個用戶或基於安裝目錄的位置(或用戶選擇的位置)創建一個文件。
如果您有預配置的數據,則至少有 2 個選項:
對於后一個用例,我編寫了一些實用程序類:
public void extractResource(String resourcePathString, Path targetDirPath) throws IOException, URISyntaxException {
URI jarURI = JarFiles.getJarURI(SomeClassInTheJar.class);
try (FileSystem jarFS = JarFiles.newJarFileSystem(jarURI)) {
Path resourcePath = jarFS.getPath(resourcePathString);
CopyFileVisitor.copy(resourcePath, targetDirPath);
}
}
在CopyFileVisitor的幫助下,您可以輕松地從/到 JAR 或 ZIP 文件中遞歸地提取/添加目錄,因為 CopyFileVisitor 使用PathUtils ,因此可以跨文件系統工作。
JarFiles.getJarURI獲取類的 JAR URI。
有關更多信息,請查看教程: https : //www.softsmithy.org/softsmithy-lib/lib/2.1.1/docs/tutorial/nio-file/index.html#ExtractJarResourceSample
該庫是開源的。 您可以從 Maven 中心獲取它:
<dependency>
<groupId>org.softsmithy.lib</groupId>
<artifactId>softsmithy-lib-core</artifactId>
<version>2.1.1</version>
</dependency>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.