Dro*_*tor 5 android android-file
我正在尝试使用FileOutputStream和写一个文件,OutputStreamWriter但我一直收到只读警告.
这是我正在使用的代码
FileOutputStream fw = new FileOutputStream((trackName.replaceAll(" ", ""))+".gpx", true);
OutputStreamWriter osw = new OutputStreamWriter(fw);
osw.write(XML_HEADER+"\n");
osw.write(TAG_GPX+"\n");
writeTrackPoints(trackName, osw, locations, time, trackDescp);
writeWayPoints(osw, locations,time);
osw.flush();
osw.close();
Run Code Online (Sandbox Code Playgroud)
而Logcat输出
java.io.FileNotFoundException: /test.gpx (Read-only file system)
at org.apache.harmony.luni.platform.OSFileSystem.openImpl(Native Method)
at org.apache.harmony.luni.platform.OSFileSystem.open(OSFileSystem.java:152)
at java.io.FileOutputStream.<init>(FileOutputStream.java:97)
at java.io.FileOutputStream.<init>(FileOutputStream.java:168)
at java.io.FileOutputStream.<init>(FileOutputStream.java:147)
at com.fyp.run_race.GPXFileWriter.<init>(GPXFileWriter.java:25)
at com.fyp.run_race.GPSTrackDetails$1.onClick(GPSTrackDetails.java:58)
at android.view.View.performClick(View.java:2408)
at android.view.View$PerformClick.run(View.java:8816)
at android.os.Handler.handleCallback(Handler.java:587)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:4627)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:521)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
at dalvik.system.NativeStart.main(Native Method)
Run Code Online (Sandbox Code Playgroud)
我确定问题是什么.
Dunno为什么Pratik的评论被低估了 - 他是对的,因为你需要获得写入外部存储的许可.假设你想写的地方.
Devconsole也是对的; 你不能只写任何文件系统,大多数文件系统都被锁定和只读.
要写入外部存储(sdcard)中的任意位置,请将getExternalStorageDirectory()用于外部存储的根目录.还可以使用getExternalStorageState()确认外部存储实际可用.
不要将文件放在外部存储的根目录中; 将它们放在子目录中以防止根变得太杂乱.(编辑:一些Android实现不会让你这样做.)
使用getExternalFilesDir()获取外部存储中的位置,该位置名义上是您的应用程序专用的.(API 8中的新功能)
使用getFilesDir()获取/ data /下的位置,您可以在其中编写应用程序专用文件.这不是外部存储,因此空间紧张; 不要在这里写大文件.
也可以看看:
您只能将文件写入内部存储(设备内存)或外部存储(SD卡),请参阅http://developer.android.com/guide/topics/data/data-storage.html.简单地打开具有任意文件名的FileOutputStream是行不通的,因为该文件系统是只读的.
| 归档时间: |
|
| 查看次数: |
12987 次 |
| 最近记录: |