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();

            }