关于Java:在Android仿真器中编写文件问题的问题

Problem Writing Files problem in Android Emulator

我正在尝试使用以下代码将一些简单数据写入外部存储。我错过了一些东西,但不确定是什么。谢谢

罗布

公共类考勤卡扩展活动{/**在首次创建活动时调用。*/@重写public void oncreate(bundle savedinstanceState){super.oncreate(保存的状态);setContentView(r.layout.main);

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
    final Button button = (Button) findViewById(R.id.Button01);
    final EditText edittext = (EditText) findViewById(R.id.EditText01);
    final EditText edittext1 = (EditText)findViewById(R.id.EditText02);
    final EditText edittext2 = (EditText)findViewById(R.id.EditText03);
    final EditText edittext3 = (EditText)findViewById(R.id.EditText04);
    final String inputString = edittext +"/n" + edittext1 +"/n"+  edittext2 +"/n" + edittext3;
    button.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {              
          //Do it
          CreateFile(inputString);
          //Let them know it
          Toast.makeText(TimeCard.this,"You are Clocked In", Toast.LENGTH_LONG).show();
        }


    });
}
//Write to SD Card

公共void createfile(string inputstring){

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 File SDCard = Environment.getExternalStorageDirectory();  
 String FILENAME = SDCard +"/time_card.txt";

    FileOutputStream fos = null;
    try {
        fos = openFileOutput(FILENAME, Context.MODE_WORLD_READABLE);
    } catch (FileNotFoundException e) {

        e.printStackTrace();
    }
    try {
        fos.write(InputString.getBytes());
    } catch (IOException e) {

        e.printStackTrace();
    }
    try {
        fos.close();
    } catch (IOException e) {

        e.printStackTrace();
    }
    }

}


我尝试运行您的代码,错误是由您使用openFileOutput(String name, int mode)方法的方式引起的。在logcat内部,我可以看到以下异常:

1
java.lang.IllegalArgumentException: File /mnt/sdcard/time_card.txt contains a path separator

这就为我指明了这个问题的答案,这也可能解决你的问题:

Context.openFileOutput is meant to
be used for creating files private to
your application. They go in your
app's private data directory. You
supply a name, not a path

OpenFileOutput的文档还指出了有关函数名参数的信息:

The name of the file to open; can not
contain path separators.

对于以后的参考,当您遇到这样的问题时,学习如何使用logcat等可用工具是非常重要的。如果没有他们,你很难弄清楚是什么问题。所以我建议你多读一些关于如何做到这一点的文章。


当你没有显示出你得到了什么样的错误信息时,很难说清楚。但我的第一个猜测是,您忘记在androidmanifest.xml文件中包含WRITE_EXTERNAL_STORAGE权限。