Java ObjectInputStream不可用 public类MakeNewFile{ 静态HashMap hm=newhashmap(); 公共静态void main(字符串[]args){ //TODO自动生成的方法存根 System.out.println(“你好!!”; 试一试{ File inputFile=新文件(“C:\\apache-tomcat-7.0.34\\webapps\\products\\Details.txt”); 系统输出打印项次(“完成”); 布尔resut=inputFile.createNewFile(); 系统输出打印项次(Result); System.out.println(“找到文件”); //fileInputStream=新的fileInputStream(inputFile); FileInputStream FileInputStream=新的FileInputStream(inputFile); ObjectInputStream ObjectInputStream=新ObjectInputStream(fileInputStream); //out.println(“hiii2”); hm=(HashMap)objectInputStream.readObject(); 系统输出打印项次(“hiii”+hm); 如果(hm.containsKey(“用户名”)) {String error\u msg=“用户名已作为“+”usertype”;} 否则{ 用户用户=新用户(“名字”、“姓氏”、“电子邮件”、“用户名”、“密码”、“用户类型”); hm.put(“用户名”,用户); FileOutputStream FileOutputStream=newfileoutputstream(“C:\\apache-tomcat-7.0.34\\webapps\\products\\Details.txt”); ObjectOutputStream ObjectOutputStream=新的ObjectOutputStream(fileOutputStream); objectOutputStream.writeObject(hm); objectOutputStream.flush(); objectOutputStream.close(); fileOutputStream.close(); } } 捕获(例外情况除外){ } } }
运行代码时未创建文件。代码未在Java ObjectInputStream不可用 public类MakeNewFile{ 静态HashMap hm=newhashmap(); 公共静态void main(字符串[]args){ //TODO自动生成的方法存根 System.out.println(“你好!!”; 试一试{ File inputFile=新文件(“C:\\apache-tomcat-7.0.34\\webapps\\products\\Details.txt”); 系统输出打印项次(“完成”); 布尔resut=inputFile.createNewFile(); 系统输出打印项次(Result); System.out.println(“找到文件”); //fileInputStream=新的fileInputStream(inputFile); FileInputStream FileInputStream=新的FileInputStream(inputFile); ObjectInputStream ObjectInputStream=新ObjectInputStream(fileInputStream); //out.println(“hiii2”); hm=(HashMap)objectInputStream.readObject(); 系统输出打印项次(“hiii”+hm); 如果(hm.containsKey(“用户名”)) {String error\u msg=“用户名已作为“+”usertype”;} 否则{ 用户用户=新用户(“名字”、“姓氏”、“电子邮件”、“用户名”、“密码”、“用户类型”); hm.put(“用户名”,用户); FileOutputStream FileOutputStream=newfileoutputstream(“C:\\apache-tomcat-7.0.34\\webapps\\products\\Details.txt”); ObjectOutputStream ObjectOutputStream=新的ObjectOutputStream(fileOutputStream); objectOutputStream.writeObject(hm); objectOutputStream.flush(); objectOutputStream.close(); fileOutputStream.close(); } } 捕获(例外情况除外){ } } },java,Java,运行代码时未创建文件。代码未在FileInputStream之后执行try块。问题在哪里? 我试过一种解决办法。文件已创建,但objectInputStream不可用。在本地运行代码后,引发的异常是EOF异常-java.io.EOFException。解决方案是检查fileInputStream是否可用: public class MakeNewFile{ static HashMap<String, User> hm = new HashMap<String, Use
FileInputStream
之后执行try
块。问题在哪里?
我试过一种解决办法。文件已创建,但objectInputStream不可用。在本地运行代码后,引发的异常是EOF异常-java.io.EOFException。解决方案是检查fileInputStream是否可用:
public class MakeNewFile{
static HashMap<String, User> hm = new HashMap<String, User>();
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("Hello!!");
try{
File inputFile = new File("C:\\apache-tomcat-7.0.34\\webapps\\products\\Details.txt");
System.out.println("Done");
boolean resut = inputFile.createNewFile();
System.out.println(resut);
System.out.println("File found");
//fileInputStream = new FileInputStream(inputFile);
FileInputStream fileInputStream = new FileInputStream(inputFile);
ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream);
//out.println("hiii2");
hm= (HashMap)objectInputStream.readObject();
System.out.println("hiii" +hm);
if(hm.containsKey("username"))
{ String error_msg = "Username already exist as " + "usertype";}
else{
User user = new User("firstname", "lastname", "email", "username","password","usertype");
hm.put("username", user);
FileOutputStream fileOutputStream = new FileOutputStream("C:\\apache-tomcat-7.0.34\\webapps\\products\\Details.txt");
ObjectOutputStream objectOutputStream = new ObjectOutputStream(fileOutputStream);
objectOutputStream.writeObject(hm);
objectOutputStream.flush();
objectOutputStream.close();
fileOutputStream.close();
}
}
catch(Exception ex){
}
}
}
不要接受例外情况。添加
例如printStackTrace()代码>在您的捕获中。添加您看到的结果。是的,在没有对异常进行任何处理的情况下,永远不要捕获异常。这只会引起混乱。如果您根本不想捕获,只需声明抛出异常的主方法,然后让程序崩溃。这比没有注意到的忍者异常要好得多。可能找不到文件?fileInputStream可用,但objectInputStream不可用。所以内部if循环没有执行。我现在应该做什么?通过删除objectInputStream.available()检查对解决方案所做的更改..此解决方案无效。仍然得到相同的问题,没有得到我需要的输出您是否注意到解决方案已被编辑?删除驱动器上的现有文件-“Details.txt”,然后重新运行代码。
if (fileInputStream.available() > 0) {
ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream);
//out.println("hiii2");
hm = (HashMap) objectInputStream.readObject();
}