我得到E / AndroidRuntime:致命异常:主要在com.test.megatest.Main4Activity $ 1.onClick(Main4Activity.java:37)。
我已经在这个论坛上阅读了大量帖子,但我无法弄清楚我失踪了什么,
这是Main4Activity.java:
package com.test.megatest;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
public class Main4Activity extends AppCompatActivity {
EditText inputText;
TextView response;
Button saveButton, readButton;
private String filename = "SampleFile.txt";
private String filepath ="MyFileStorage";
File myExternalFile;
String myData ="";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main4);
inputText = (EditText) findViewById(R.id.myInputText);
response = (TextView) findViewById(R.id.response);
saveButton =(Button) findViewById(R.id.saveExternalStorage);
saveButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
FileOutputStream fos = new FileOutputStream(myExternalFile); //LINE 37
fos.write(inputText.getText().toString().getBytes());
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
inputText.setText("");
response.setText("SampleFile.txt saved to somewhere..");
}
});
}
}
这里有人能指出我正确的方向吗? :)
答案 0 :(得分:1)
您尝试打开输出流的文件为NULL。 您将其声明为成员但从未对其进行初始化。
答案 1 :(得分:1)
您的Main4Activity有一个"文件"变量:
File myExternalFile;
但是没有为该变量分配任何对象/值您试图在其中使用它:
FileOutputStream fos = new FileOutputStream(myExternalFile);
显然你会得到一个例外:P
你应该初始化" myExternalFile"使用java.io.File中指定的4个公共构造函数中的任何一个(取决于您的用例)。
例如:
// If you need a "Persistent" file in private directory of your application
//
myExternalFile = new File(this.getFilesDir() ,"name_of_your_file.txt");
//
// or
// If you need a "Cache" file
myExternalFile = new File(this.getCacheDir() ,"name_of_your_file.txt");
Android文件系统上面文件的位置是:
#Persistent: /data/data/com.test.megatest/files 或
(任何文件管理器应用程序)/Android/data/com.test.megatest/files
#Cache: /data/data/com.test.megatest/cache 或
(任何文件管理器应用程序)/ Android/data/com.test.megatest/files
的参考:强>
1)java.io.FileOutputStream -> FileOutputStream (File file) public constructor
"创建一个文件输出流以写入由指定的File对象表示的 文件 "
答案 2 :(得分:1)
将文件初始化为
File myExternalFile=new File("SampleFile.txt");