我不是在谈论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();
}
}
答案 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
}