2017-09-21 25 views
0
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){ 

     } 

    } 
} 

ファイルを実行中にコードが作成されていません。 FileInputStreamの後にコードがtryブロックの実行されていません。問題はどこだ? 私は1つの解決策を試しました。ファイルは作成されましたが、objectInputStreamは使用できません。ObjectInputStreamを使用できません

+2

例外を飲み込まないでください。あなたのキャッチに 'ex.printStackTrace();'を追加してください。結果として表示されているものを追加します。 – Pshemo

+2

ええ、何もせずに例外を捕まえることは決してありません。それはちょうど混乱を引き起こすでしょう。キャッチする気がない場合は、例外をスローしてプログラムをクラッシュさせる主な方法を宣言してください。それはあなたが気づいていないという忍者の例外を持つよりはるかに良いです。 – Gendarme

+0

ファイルが見つかりませんでしたか? –

答えて

0

コードをローカルで実行した後、スローされる例外はEOF例外(java.io.EOFException)です。解決方法は、fileInputStreamが使用可能かどうかを確認することです。

if (fileInputStream.available() > 0) { 
       ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream); 

       //out.println("hiii2"); 

        hm = (HashMap) objectInputStream.readObject(); 

      } 
+0

fileInputStreamは使用できますが、objectInputStreamは使用できません。内側のifループは実行されません。私は今何をすべきか? –

+0

objectInputStream.available()チェックを削除してソリューションに加えた変更。 –

+0

@divya patel - 上記の解決策は機能しましたか? –

関連する問題