我正在尝试创建一个用户选择几个复选框的应用程序,然后当他们点击提交时,它会为每个选中的复选框创建一个包含一个句子的 .txt 文件。
我已经成功构建了这个文件,它正确地创建了文件,但我需要将它保存到一个可访问的文件位置,以便它可以附加到电子邮件中。我真的不在乎它保存到哪里,只要它是可访问的。
以下代码在 Android 虚拟设备和我的 Galaxy 2 中运行时会导致崩溃。该应用程序是以后应用程序的概念证明。谢谢你。
@Override
public void onClick(View v)
{
String nochartOutput = " ";
if (sitting.isChecked())
nochartOutput += "The patient was sitting in a chair. ";
if (breathing.isChecked())
nochartOutput += "The patient was breathing. ";
if (alert.isChecked())
nochartOutput += "The patient was alert. ";
FileOutputStream fOut = null;
File sdDir = Environment.getExternalStorageDirectory();
try {
fOut = openFileOutput(sdDir + "/AutoWriter/samplefile.txt",MODE_WORLD_READABLE);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
OutputStreamWriter osw = new OutputStreamWriter(fOut);
try {
osw.write(nochartOutput);
osw.flush();
osw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
03-04 18:39:53.604: W/dalvikvm(10453): threadid=1: 线程以未捕获的异常退出 (group=0x40c211f8)
03-04 18:39:53.624:E/AndroidRuntime(10453):致命异常:主要
03-04 18:39:53.624: E/AndroidRuntime(10453): java.lang.IllegalArgumentException: 文件 /mnt/sdcard/samplefile.txt 包含路径分隔符
03-04 18:39:53.624: E/AndroidRuntime(10453): 在 android.app.ContextImpl.makeFilename(ContextImpl.java:1703)
03-04 18:39:53.624: E/AndroidRuntime(10453): 在 android.app.ContextImpl.openFileOutput(ContextImpl.java:723)
03-04 18:39:53.624: E/AndroidRuntime(10453): 在 android.content.ContextWrapper.openFileOutput(ContextWrapper.java:165)
03-04 18:39:53.624: E/AndroidRuntime(10453): at com.example.com.dresdor.autowriter.MainActivity$1.onClick(MainActivity.java:48)
03-04 18:39:53.624: E/AndroidRuntime(10453): 在 android.view.View.performClick(View.java:3620)
03-04 18:39:53.624: E/AndroidRuntime(10453): 在 android.view.View$PerformClick.run(View.java:14292)
03-04 18:39:53.624: E/AndroidRuntime(10453): 在 android.os.Handler.handleCallback(Handler.java:605)
03-04 18:39:53.624: E/AndroidRuntime(10453): 在 android.os.Handler.dispatchMessage(Handler.java:92)
03-04 18:39:53.624: E/AndroidRuntime(10453): 在 android.os.Looper.loop(Looper.java:137)
03-04 18:39:53.624: E/AndroidRuntime(10453): 在 android.app.ActivityThread.main(ActivityThread.java:4507)
03-04 18:39:53.624: E/AndroidRuntime(10453): 在 java.lang.reflect.Method.invokeNative(Native Method)
03-04 18:39:53.624: E/AndroidRuntime(10453): 在 java.lang.reflect.Method.invoke(Method.java:511)
03-04 18:39:53.624: E/AndroidRuntime(10453): 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:790)
03-04 18:39:53.624: E/AndroidRuntime(10453): 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557)
03-04 18:39:53.624: E/AndroidRuntime(10453): at dalvik.system.NativeStart.main(Native Method)