クラス オブジェクトを内部ストレージに保存しようとしているので、使用する必要はありませんSharedPreferences
。しかし、保存しようとしているファイルが見つかりません。
public class LoginActivity extends AppCompatActivity implements Serializable {
final String filename = "userInfo.txt";
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
final File file = new File(this.getFilesDir(), filename);
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
private void Fblogin(){ //Called when user tries to login with Facebook
//Off-topic FB code here
new User(/*args*/){
@Override
public void userFinished(User user){
try{
FileOutputStream fileOutputStream = openFileOutput(filename, MODE_PRIVATE);
ObjectOutputStream objectOutputStream = new ObjectOutputStream(fileOutputStream);
objectOutputStream.writeObject(user);
objectOutputStream.flush();
objectOutputStream.close();
} catch (IOException e){e.prinstacktrace();}
}
}
}
}
自分でファイルを手動で作成してプロジェクト フォルダーに配置する必要がありcreateNewFile()
ますか?
エラー:
java.io.FileNotFoundException: userInfo.txt: open failed: ENOENT (No such file or directory)
at com.couponwallet.couponwalletconsumer.MainActivity.onCreate(MainActivity.java:124)
Caused by: android.system.ErrnoException: open failed: ENOENT (No such file or directory)
at libcore.io.Posix.open(Native Method)
at libcore.io.BlockGuardOs.open(BlockGuardOs.java:186)
at libcore.io.IoBridge.open(IoBridge.java:442)
編集:私はどういうわけか私の2つの活動を混同しました.問題があるのは私の他の活動です. これtry catch
は私のMainActivity
中にありonCreate
ます。
try {
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("userInfo.txt"));
/*Above line is line 124 and causes the error*/
user = (User) ois.readObject();
Log.v("MainUser", "try statement");
if (user == null) {
Log.v("MainUser", "null");
} else {
Log.v("MainUser", user.toString());
}
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}