有没有办法确定Java程序是否是第一次运行?

时间:2018-08-24 09:27:26

标签: java

我不是在谈论android开发,我想知道是否可以第一次运行Java程序。我的程序应该获取用户输入的密码,并检查密码是否与存储的密码匹配加密的密码,然后填充一些数组和变量。但是,如果这是第一次运行该程序,则应该由用户创建密码,然后创建.txt并写入数据。除了首先创建.txt之外,还有一个这样做的方式?

    public class MyClass {

    AccountReader reader = new AccountReader();
    AccountWriter writer = new AccountWriter();

    public static void main(String args[]) {


        if(its the first time launching) do something
        else{
            reader.readFromFile();
            do something else
        } 
        .
        .
        .
        writer.writeToFile();

    }
}

3 个答案:

答案 0 :(得分:2)

您不能在程序中“记住”它,但是可以将其保存在文件中。那是因为在终止程序时,程序中的所有变量都会“重置”。

因此您可以将其写入文件: How do I create a file and write to it in Java?

或在第一次启动时创建一个文件,并查看每次启动(如果该文件已存在): How do I check if a file exists in Java?

答案 1 :(得分:1)

Java程序在某些容器中作为进程运行,例如JVM或类似tomcat的服务器。任何进程都可以被“杀死”并重新启动,因此您的Java程序将永远无法判断它是否是首次运行。从Java程序的角度来看,每次启动都是第一次。

通常情况下,我们通过持久将信息保存在程序 之外。通常是数据库或非临时文件夹中的文件。

您必须确定什么构成“首次”运行。缺少密码文件是否可以视为首次运行?如果是这样,您可以使用该检查。否则,您可以从其他应用程序中获取灵感,例如bash或git等,它们通常会在主目录中创建一个.rc文件。 ~/.bashrc。您可以将其视为您的商店。您可以创建自己的.rc文件并在其中存储您的首选项。该文件的缺失可被视为“首次运行”。

答案 2 :(得分:0)

因此感谢@Donatic我发现我需要检查所需的.txt是否存在,如果不存在,则这是第一次启动该程序。如果我想使其具有一定的灵活性,以便它可以在每台计算机上运行,抱歉,您没有进行自我测试,但我只能在在线编辑器中工作,我认为我无法从那里进行检查。

URL main = Main.class.getResource("Main.class");
File javaFile = new File(main.getPath());

String absolutePath = javaFile.getAbsolutePath();
String javaFileFolderPath = absolutePath.substring(0,absolutePath.lastIndexOf(File.separator));
String txtFilePath = javaFileFolderPath+"\\wantedTxt.txt";

File txtFile = new File(txtFilePath);
if(txtFile.exists() && !txtFile.isDirectory()) { 
    // this is not the first time running the program
}
else{
    //this is the first time running the program
}