我想要一个选项,当用户选择自动登录选项...我的程序将创建一个文件夹,它将保存一个文件...当程序启动时,它将查找文件夹而不是文件。问题是,当我通过netbeans运行我的代码时,它运行得很好,但是当我通过jar运行它时,它找不到任何文件夹。任何机构都可以指导我,在运行时创建文件夹并访问它的最佳方法是什么。 Down是我的文件编写代码......
private void writeSerializableUserObject(boolean isAutoLogin , boolean isAutoRemember){
SerializableUser serializeUserObj = new SerializableUser();
serializeUserObj.setUserEmail(TempSessionUser.getTempUser().getEmail());
serializeUserObj.setUserPassword(TempSessionUser.getTempUser().getPassword());
serializeUserObj.setUserName(TempSessionUser.getTempUser().getF_name());
serializeUserObj.setIsAutoLogin(isAutoLogin);
if(isAutoRemember){
serializeUserObj.setIsAutoRemember(true);
}
System.out.println("in side method.......");
修改
String path = System.getProperty("user.home");
File file = new File(path+"/user.ser");
if(!file.exists()){
file.mkdir();
}
try {
FileOutputStream fileOutPut = new FileOutputStream(file);
ObjectOutputStream oos;
try {
oos = new ObjectOutputStream(fileOutPut);
oos.writeObject(serializeUserObj);
oos.flush();
oos.close();
} catch (IOException ex) {
Logger.getLogger(MainFrame.class.getName()).log(Level.SEVERE, null, ex);
}//Inner catch statment end
} catch (FileNotFoundException ex) {
Logger.getLogger(MainFrame.class.getName()).log(Level.SEVERE, null, ex);
}//Outer Catch statment end
}
编辑之后,它给了我这个例外...在netbeans execution.her uptill HaseebAimal是我的主目录路径
java.io.FileNotFoundException: C:\Users\HaseebAimal\UserData\user.ser (Access is denied)
at java.io.FileOutputStream.open(Native Method)
at java.io.FileOutputStream.<init>(FileOutputStream.java:194)
at java.io.FileOutputStream.<init>(FileOutputStream.java:145)
答案 0 :(得分:2)
getClass().getResource("/UserData")
为您提供类路径中的位置,有时(通常)不是文件系统中的目录。相反,你应该选择以下一个或多个:
System.getProperty("user.home")
获取该位置。System.getProperty("user.dir")
。最后一个选项可能是最糟糕的,除非你知道工作目录将永远是什么,因为你已经以某种方式处理了应用程序的安装。
答案 1 :(得分:0)
在创建FileOutputStream
之前,请检查file.canRead()
和file.canWrite()
返回的内容。
您需要确保应用程序可以写入该位置。如果您无权访问该位置,请尝试将目录更改为您具有写入权限的其他位置。
类似的东西:
String path = "D:/test";