Java Android-在内存中保存对象
这个代码应该创建一个新用户,使用他输入的用户名和密码,然后用与他的电子邮件匹配的文件名将新对象保存到手机内存中,以便在登录方法中,我可以查找与输入的电子邮件匹配的文件,并将其反序列化,他的所有用户信息都将在那里。。。但我一直收到一个FileNotFooundException。。。我真的不明白。。。请有人帮帮我!: 代码如下:Java Android-在内存中保存对象,java,android,login,Java,Android,Login,这个代码应该创建一个新用户,使用他输入的用户名和密码,然后用与他的电子邮件匹配的文件名将新对象保存到手机内存中,以便在登录方法中,我可以查找与输入的电子邮件匹配的文件,并将其反序列化,他的所有用户信息都将在那里。。。但我一直收到一个FileNotFooundException。。。我真的不明白。。。请有人帮帮我!: 代码如下: package com.example.eventmanager; import java.io.File; import java.io.FileInputStr
package com.example.eventmanager;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
public class CreateAccount extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_create_account);
}
public void createUserAccount(View v) {
EditText username = (EditText) findViewById(R.id.editText1);
EditText password = (EditText) findViewById(R.id.editText2);
EditText secondPassword = (EditText) findViewById(R.id.editText3);
if (!(password.getText().toString().equals((secondPassword.getText()
.toString())))) {
Toast.makeText(this, "Passwords Don't Match", Toast.LENGTH_LONG).show();
} else {
User newUser = new User(username.getText().toString(), password.getText().toString());
String fileName = newUser.getEmail();
try {
ObjectOutputStream os = new ObjectOutputStream(new FileOutputStream(fileName));
os.writeObject(newUser);
os.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
Toast.makeText(this, "FileNotFoundException", Toast.LENGTH_LONG)
.show();
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
Toast.makeText(this, "IOException", Toast.LENGTH_LONG).show();
e.printStackTrace();
}
Intent intent = new Intent(this, LoginScreen.class);
startActivity(intent);
Toast.makeText(this, "Account Created Successfully",
Toast.LENGTH_LONG).show();
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_create_account, menu);
return true;
}
}
每个FileOutputStream文档:在以下场景中,它抛出FileNotFoundException:
FileNotFoundException-如果文件存在,但它是一个目录而不是常规文件,或者不存在但无法创建,或者由于任何其他原因无法打开
请确保字符串fileName=newUser.getEmail.toString;结果生成有效的文件名,我怀疑是这样。FileOutputStream使用绝对路径,我认为如果您只提供文件名,则默认为内部存储的根-在普通设备上,内部存储的根将无法访问
您应该使用openFileOutputString名称,而不是int模式。这保证了在分配给您自己的应用程序的区域的内部存储器中创建文件。要读回文件,请使用相应的openFileInputString name方法。我添加了一个Toast,用于打印文件名,结果是用户输入的字符串。这是有效的文件名吗?@DerekLurette用户输入的文件名是什么?另外,希望您的程序有权创建该文件。您是否也可以共享完整的相关错误堆栈跟踪?文件名为:abc。。。我不知道我必须有权创建一个文件。。。如何访问?:/。。。。我是eclipse和Android API的新手。。。我不知道如何获取堆栈跟踪抱歉!