我正在开发一个java控制台应用程序,它应该具有admin和普通用户的登录界面,根据文本文件的内容读取和验证输入。
但是我似乎一直在阅读文本文件的内容,并且它不断发出一个错误,指出:"找不到文件"
下面是我的代码,用于查找和读取文本文件的内容。
//Method for teller/shop assistant login
public static void tellerLogin(){
//loading and reading the text file containing the login credentials
Scanner scan = new Scanner (new File("the \\ dir\\myFile.extension"));
Scanner keyboard = new Scanner (System.in);
String user = scan.nextLine();
String pass = scan.nextLine();
//String variables to hold the data retrieved from the text file
String inpUser = keyboard.nextLine();
String inPass = keyboard.nextLine();
//Verifying the user input against the text file contents for verification
if (inpUser.equals(user) && inPass.equals(pass)){
System.out.println(" Logged in as Admin");
tellerMenu();
}
else{
System.out.println("Incorrect credentials");
}
}
这是错误:
SEVERE: null java.io.FileNotFoundException: D:\pasd\adminlogin.txt (The system cannot find the file specified) at
java.io.FileInputStream.open0(Native Method) at
java.io.FileInputStream.open(FileInputStream.java:195) at
java.io.FileInputStream.<init>(FileInputStream.java:138) at
java.util.Scanner.<init>(Scanner.java:611) at
kiosk.Kiosk.adminLogin(Kiosk.java:89) at kiosk.Kiosk.main(Kiosk.java:35)
答案 0 :(得分:0)
如果你想在这里使用绝对路径文件,那么你需要
新文件(“\ dir \ myFile.extension”);
\ dir \ myFile.extension是绝对路径;
注意:
的示例语法 windows system
:C:\的1.txt,
Mac or linux
:/用户/家庭/ xxx.txt
如果将文件设置为相对路径,则可以使用资源目录中的资源文件:YouClass.class.getClassLoader().getResource(path)
E.g。
String path="1.txt";//set your file path
//get file resource
URL resource = MainTest.class.getClassLoader().getResource(path);
//if file not exist
if(resource==null){
throw new NullPointerException("not found a resource file")
}
//create file using path
File file= new File(resource.getFile());
//get file
Scanner scan = new Scanner (file);
具体来说,对于您的问题:
您需要在路径D:\pasd\adminlogin.txt
,
您可以将\
的路径分隔符/
更改为D:/pasd/adminlogin.txt
;
建议您将adminlogin.txt
放入项目resources
目录
这个项目是你的问题的例子: https://github.com/lonecloud/stackoverflow/