我們有一個獨立的java swing應用程序,用戶可以通過提供IP在打印機上打印他繪製的內容。記住在客戶端的獨立應用程序中輸入的值
現在的要求是,應用程序需要記住該用戶上次給出的ip。
我到現在可以想到的是(儘管一個暴躁的) - 在客戶端計算機上保留一種日誌文件類型的存儲,並且每次應用程序啓動時它都會讀取上次提交的應用程序。
任何建議將有所幫助。
在此先感謝。
我們有一個獨立的java swing應用程序,用戶可以通過提供IP在打印機上打印他繪製的內容。記住在客戶端的獨立應用程序中輸入的值
現在的要求是,應用程序需要記住該用戶上次給出的ip。
我到現在可以想到的是(儘管一個暴躁的) - 在客戶端計算機上保留一種日誌文件類型的存儲,並且每次應用程序啓動時它都會讀取上次提交的應用程序。
任何建議將有所幫助。
在此先感謝。
以下是使用Java Preferences API實現您想要的教程。 從文章:
的Java偏好API提供了 系統的方式來處理用戶和 系統首選項和配置 數據,例如保存用戶設置, 記得有場 等的最後一個值
我會用這種方法在寫入任何數據了明確的,因爲它的平臺無關的文件。
我不真的推薦這個,但你也可以使用註冊表。
或多或少就是這樣。您仍然可以查看HistoryTextField的組件jEdit的源代碼。 http://www.jedit.org/api/org/gjt/sp/jedit/gui/HistoryTextField.html
從jEdit的源樣品:
public boolean save(Map<String, HistoryModel> models)
{
Log.log(Log.MESSAGE,HistoryModel.class,"Saving history");
File file1 = new File(MiscUtilities.constructPath(
jEdit.getSettingsDirectory(), "#history#save#"));
File file2 = new File(MiscUtilities.constructPath(
jEdit.getSettingsDirectory(), "history"));
if(file2.exists() && file2.lastModified() != historyModTime)
{
Log.log(Log.WARNING,HistoryModel.class,file2
+ " changed on disk; will not save history");
return false;
}
jEdit.backupSettingsFile(file2);
String lineSep = System.getProperty("line.separator");
BufferedWriter out = null;
try
{
out = new BufferedWriter(new OutputStreamWriter(
new FileOutputStream(file1), "UTF-8"));
if(models != null)
{
Collection<HistoryModel> values = models.values();
for (HistoryModel model : values)
{
if(model.getSize() == 0)
continue;
out.write('[');
out.write(StandardUtilities.charsToEscapes(
model.getName(),TO_ESCAPE));
out.write(']');
out.write(lineSep);
for(int i = 0; i < model.getSize(); i++)
{
out.write(StandardUtilities.charsToEscapes(
model.getItem(i),
TO_ESCAPE));
out.write(lineSep);
}
}
}
out.close();
/* to avoid data loss, only do this if the above
* completed successfully */
file2.delete();
file1.renameTo(file2);
}
catch(IOException io)
{
Log.log(Log.ERROR,HistoryModel.class,io);
}
finally
{
IOUtilities.closeQuietly(out);
}
historyModTime = file2.lastModified();
return true;
}
由於它是一個Swing應用程序,您可以使用Java Web Start則堅持使用PersistenceService數據啓動它。這是一個demo. of the PersistenceService。
我不知道該怎麼做。你能提供一些指點嗎? – kshtjsnghl 2011-01-11 18:47:48
@kshtjsnghl Amir答案中的Java首選項APi使用註冊表,並使其相對容易。 – 2011-01-11 18:54:05