2014-03-27 11 views
1

我需要把一個文本文件裏面的jar。當用戶運行該jar時,會出現一個登錄屏幕。一旦他登錄並認證自己,只有一個文本文件應該出現,他應該能夠寫入並保存它。我完成了登錄和身份驗證部分,任何人都可以幫助我編寫只打開文本文件的部分,並且用戶有權寫入並保存它?用戶可以在jar中打開文本文件並對其進行更改嗎?

回答

0

你可以這樣做,但不要直接修改文件。如果由於某種原因寫入修改後的內容失敗,則會丟失原始文件修改後的文件。

創建一個臨時文件,在其中放置修改後的內容,然後僅替換原始文件。

例子:

final Map<String, String> = Collections.emptyMap(); 
final URI zip = URI.create("jar:file:/path/to/your/jar"); 
final FileSystem zipfs = FileSystems.newFileSystem(zip, env); 

final Path tempFile = Files.createTempFile("tmp", "txt"); 
final Path srcfile = zipfs.getPath("path/of/file/into/jar"); 
final Path renamed = srcfile.resolveSibling("newfile"); 

// read contents of source file, for instance Files.newBufferedReader(), or 
// Files.readAllLines(); then write the modified content into tempFile; and 
// when done: 

Files.copy(tempFile, renamed); 
Files.delete(tempFile); 
Files.move(renamed, srcfile, StandardCopyOption.REPLACE_EXISTING); 

zipfs.close(); // <-- don't forget that 

注意重命名爲原始文件是如何最後操作。

+0

我正在做一個記錄程序,記錄下這些變化。我的流程是身份驗證 - >文件打開 - >更改完成 - >所做的更改保存在新文件中 - >新文件發送到上傳器。 我們可以這樣做嗎?就像身份驗證完成後,jar會將文件完全提取到某個位置並開始監視該位置的文件? –

+0

在Java 7中有一個'WatchService',所以你可以監視。但這不是真的你的原始問題... – fge

+0

是的,你說我們不應該直接玩jar中的文件,所以我認爲這可能是另一種選擇。 –

相關問題