2013-03-21 35 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(); 
} 
}