2013-03-21 41 views

回答

5

您需要將數據寫入持久存儲位置,例如數據庫或磁盤上的文件。

+0

是的,我可以把它寫入一個文件,但是至今。它是一個非常小的數據,我想知道是否有任何方法可以避免這種情況 – user697911 2013-03-21 02:58:42

+0

@ user697911程序不會停止執行(一個壞主意 - 如果你的計算機崩潰怎麼辦?)或者它將數據寫入文件或數據庫。您的選擇;) – Patashu 2013-03-21 02:59:54

+0

@ user697911:您可能想要使用屬性文件。 – SLaks 2013-03-21 03:00:30

1

(在SLaks上進行擴展應答) - 如果要在執行過程中保存程序中的任何信息,則需要將該信息存儲在程序外部的某個位置。這可以是一個數據庫(通常用於大型/複雜程序)或文件(用於小型程序)或任何介於兩者之間的任何內容(非現場雲存儲等)。在「保存文檔」的任何桌面應用程序中都使用了相同的概念 - 它基本上保存在可以通過程序重新加載的文件中。

Java中的一個簡單示例是使用屬性文件 - this question給出瞭如何將信息寫入屬性文件的示例 - 您可以在下次啓動應用程序時使用相關的API讀取這些屬性。

如果你更冒險,Java中有several frameworks提供持久性功能,但這聽起來像是比你在你的應用程序中尋找更復雜。

2

請您詳細介紹一下「我運行同一程序的第二天,str的值是」B「,而不是」A「。urs程序駐留在哪裏?您是否通過啓動服務器再次啓動程序? At下面的代碼 進口java.lang.reflect.Field中的程序調用的最後一個出口點;?!

public class Reflection { 
    String str = "A"; 
    void test(){ 
     Class test= Reflection.class; 
     try { 
     Field aa=  test.getDeclaredField("str"); 
     aa.setAccessible(true); 
     try { 

     aa.set(this, "B"); 
     System.out.println(str); 
    } catch (IllegalArgumentException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (IllegalAccessException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

     } catch (SecurityException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (NoSuchFieldException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

    } 


public static void main(String[] args) { 
    Reflection test=new Reflection(); 
    test.test(); 
} 
}