我有一个应用程序,每次打开它时,应用程序会读取保存到内部存储器中的文件并打印一些内容。然后它更新文件。
String filename = "myfile";
String restore = "";
FileOutputStream outputStream;
FileInputStream inputStream;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
restore = read();
System.out.println("Before if statement the restore value is: " + restore);
if(restore == "test3"){
restore = "test4";
System.out.println("I' m saving: " +restore);
save(restore);
}
if(restore == "test2"){
restore = "test3";
System.out.println("I'm saving: " +restore);
save(restore);
}
if(restore2 == "test1"){
restore = "test2";
System.out.println("I'm saving " +restore);
save(restore);
}
}
public String read() {
try {
inputStream = openFileInput(filename);
StringBuilder builder = new StringBuilder();
String restore2 = null;
int ch;
while((ch = inputStream.read()) != -1){
builder.append((char)ch);
}
System.out.println(builder.toString());
if(builder.toString() != null) {
restore2 = builder.toString();
System.out.println("Restore 2 value is: " + restore2);
}
inputStream.close();
return restore2;
} catch (Exception e) {
e.printStackTrace();
return "test1";
}
}
private void save(String salvare) {
try {
outputStream = openFileOutput(filename, Context.MODE_PRIVATE);
outputStream.write(salvare.getBytes());
System.out.println("I saved: " + salvare);
outputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
}
当我第一次打开应用程序时,一切顺利,我得到了:
Before if statement the restore value is test1
I'm saving test1
I saved test 1
当我重新打开我的应用程序时,read()函数运行良好,因为我得到了
Before if statement the restore value is test2
但我没有得到I'm saving test2
。这意味着第二个if语句似乎没用。看着我的日志猫我没有得到任何类型的错误。可能是什么问题?
答案 0 :(得分:5)
String
是对象。因此,应将它们与equals
方法进行比较,而不是==
运算符(检查标识)。
E.g:
if (restore.equals("test3")) {