2017-02-14 95 views
1

我得到E/AndroidRuntime:致命的例外:主要在com.test.megatest.Main4Activity $ 1.onClick(Main4Activity.java:37)。致命异常主要在onclick

香港专业教育学院读吨的帖子在这个论坛,但我不能找出我在想念,

这是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.."); 

      } 
     }); 
    } 
} 

能有人在这里只是点我朝着正确的方向吗? :)

回答

1

您尝试打开输出流的文件为NULL。 您将其声明为成员,但从未将其初始化。

1

你Main4Activity有一个 “文件” 变量:

File myExternalFile; 


但是,如果没有指定任何对象/值变量您正尝试使用它:

FileOutputStream fos = new FileOutputStream(myExternalFile); 


显然你会得到一个例外:P

您应该使用java.io.File中指定的4个公共构造函数(取决于您的用例)初始化“myExternalFile”。
例如:

// 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文件系统

位置是:
#持久性: /data/data/com.test.megatest/files
(Any File Manager App)/Android/data/com.test.megatest/files

#Cache: /data/data/com.test.megatest/ca澈
(任意文件管理器应用程序)/Android/data/com.test.megatest/files


参考:
1)java.io.FileOutputStream -> FileOutputStream (File file) public constructor
“创建一个文件输出流写入由指定文件对象表示的文件

+0

谢谢! Soooooo到下一个缓慢的问题,一旦我点击“保存”,我可以在哪里找到SampleFile.txt文件? – Rasmus

+0

@Rasmus在我的答案结尾添加了“位置”。如果您有任何其他查询将它们传递给:) –

1

将文件初始化为

File myExternalFile=new File("SampleFile.txt"); 
相关问题