2016-08-13 8 views
0

ユーザのログイン時の私の活動 ユーザリストを持つファイルが存在するかどうかをチェックします。このメソッドがfalseを返す場合は、このリストを保存する新しいファイルを作成します。java.io.FileNotFoundException:/sdcard/Hotel_Manager/HotelsMangerUser.dat(そのようなファイルやディレクトリはありません)

これはメソッドです:

public boolean isLoginFilePresent() { 
     file = new File(loginData.getPath());//file name /sdcard/Hotel_Manager/HotelsMangerUser.dat; 

     try { 
      file.createNewFile(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     present = file.exists(); 
     return present; 
    } 

しかし、私は次のエラー(これはログです)を取得:

java.io.FileNotFoundException: /sdcard/Hotel_Manager/HotelsMangerUser.dat (No such file or directory) 
08-13 11:15:36.174 12174-12174/app.com.hotelsmanager W/System.err:  at java.io.FileOutputStream.open(Native Method) 
08-13 11:15:36.175 12174-12174/app.com.hotelsmanager W/System.err:  at java.io.FileOutputStream.<init>(FileOutputStream.java:221) 
08-13 11:15:36.175 12174-12174/app.com.hotelsmanager W/System.err:  at java.io.FileOutputStream.<init>(FileOutputStream.java:169) 
08-13 11:15:36.175 12174-12174/app.com.hotelsmanager W/System.err:  at app.com.hotelsmanager.Controller.LoginDataSaver.saveLoginData(LoginDataSaver.java:108) 
08-13 11:15:36.175 12174-12174/app.com.hotelsmanager W/System.err:  at app.com.hotelsmanager.Controller.LoginController.addDemoLoginFile(LoginController.java:130) 
08-13 11:15:36.175 12174-12174/app.com.hotelsmanager W/System.err:  at app.com.hotelsmanager.View.Activities.LoginViewActivity.loginMe(LoginViewActivity.java:101) 
08-13 11:15:36.175 12174-12174/app.com.hotelsmanager W/System.err:  at app.com.hotelsmanager.View.Activities.LoginViewActivity.-wrap0(LoginViewActivity.java) 
08-13 11:15:36.175 12174-12174/app.com.hotelsmanager W/System.err:  at app.com.hotelsmanager.View.Activities.LoginViewActivity$1.onClick(LoginViewActivity.java:71) 
08-13 11:15:36.175 12174-12174/app.com.hotelsmanager W/System.err:  at android.view.View.performClick(View.java:5610) 
08-13 11:15:36.175 12174-12174/app.com.hotelsmanager W/System.err:  at android.view.View$PerformClick.run(View.java:22260) 
08-13 11:15:36.175 12174-12174/app.com.hotelsmanager W/System.err:  at android.os.Handler.handleCallback(Handler.java:751) 
08-13 11:15:36.175 12174-12174/app.com.hotelsmanager W/System.err:  at android.os.Handler.dispatchMessage(Handler.java:95) 
08-13 11:15:36.175 12174-12174/app.com.hotelsmanager W/System.err:  at android.os.Looper.loop(Looper.java:154) 
08-13 11:15:36.175 12174-12174/app.com.hotelsmanager W/System.err:  at android.app.ActivityThread.main(ActivityThread.java:6077) 
08-13 11:15:36.175 12174-12174/app.com.hotelsmanager W/System.err:  at java.lang.reflect.Method.invoke(Native Method) 
08-13 11:15:36.175 12174-12174/app.com.hotelsmanager W/System.err:  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865) 
08-13 11:15:36.175 12174-12174/app.com.hotelsmanager W/System.err:  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755) 

何が間違っているの?

私を助けてくれてありがとう!!!!

+1

にユーザー保存するための方法です。 – Razgriz

+1

'isLoginFilePresent()'は常にtrueを返します。ファイルが作成されたかどうか。しかし、あなたは 'file.createNewFile()'で常に新しい空ファイルを作成します。 – greenapps

+1

しかし、問題は 'F​​ileOutputStream'で発生するので、そのコードを表示する必要があります。 – greenapps

答えて

1

これはあなたのファイルまたはフォルダのパスが存在することを確認してくださいファイル

public void saveLoginData(Set<User> accountSet, Context context) { 
     final List<String> loginFile = new ArrayList<>(); 

     for (final User u : accountSet) { 
      loginFile.add(u.getName() + Constants.USERDATA_SEPARATOR + u.getPassword() + 
        Constants.USERDATA_SEPARATOR + u.getAccessLevel().toString()); 
     } 
     try { 
      sdDir = new File(Constants.USER_DIR); //USER_DIR = "/sdcard/Hotel_Manger" 
      sdDir.mkdirs(); 
      userOutput = new File(sdDir,Constants.USER_PATH);//USER_PATH = "HotelManagerUser.dat" 
      fos = new FileOutputStream(userOutput); //<------this return FileNotFoundException e 
      out = new ObjectOutputStream(fos); 
      out.writeObject(loginFile); 
      out.close(); 
      fos.close(); 
     } catch (FileNotFoundException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 


    } 
関連する問題