0

编辑:当我尝试实施建议的解决方案时发生错误。请查看下面的附加信息。如果可以的话,请帮助我,在此先感谢!

好的,所以我终于让我的应用程序最近创建并写入文件。

在模拟器上,这完美地工作。但是,当我将应用程序上传到手机并尝试adb shell进入手机时。我无法访问手机上包含该文件的目录。

目录是/data/data/cpe495.smartapp/files/. 当我尝试更改目录时,它告诉我我没有权限。

我假设这是因为我的手机没有 root 并且不在 root 帐户中。植根我的手机不是我要做的事情。

有没有办法我可以创建这个文件并写入它并能够adb pull从我的手机中取出它?这是我创建文件的当前方式:

fOut = tThis.openFileOutput("test.csv", tThis.MODE_APPEND);

提前致谢!!

还是行不通

我已将以下代码添加到我的应用程序中,当我运行它并尝试将文件写入 sdcard 时,它失败并出现以下错误,请帮助我!

                      String inFileName = "/data/data/cpe495.smartapp/files/test.csv"; //TODO Use folder/filename
                      File inFile = new File(inFileName);
                      try{
                      FileInputStream fis = new FileInputStream(inFile);

                      String outFileName = Environment.getExternalStorageDirectory()+"/test.csv"; //TODO Use output filename
                      OutputStream output = new FileOutputStream(outFileName);

                      byte[] buffer = new byte[1024];
                      int length;
                      while ((length = fis.read(buffer))>0)
                        output.write(buffer, 0, length);

                      output.flush();
                      output.close();
                      fis.close();
                      } catch (Exception e) {
                          e.printStackTrace();
                      }   

04-05 23:20:11.551: WARN/System.err(285): java.io.FileNotFoundException: /mnt/sdcard/test.csv (Permission denied)
04-05 23:20:11.582: WARN/System.err(285):     at org.apache.harmony.luni.platform.OSFileSystem.openImpl(Native Method)
04-05 23:20:11.593: WARN/System.err(285):     at org.apache.harmony.luni.platform.OSFileSystem.open(OSFileSystem.java:152)
04-05 23:20:11.601: WARN/System.err(285):     at java.io.FileOutputStream.<init>(FileOutputStream.java:97)
04-05 23:20:11.601: WARN/System.err(285):     at java.io.FileOutputStream.<init>(FileOutputStream.java:168)
04-05 23:20:11.612: WARN/System.err(285):     at java.io.FileOutputStream.<init>(FileOutputStream.java:147)
04-05 23:20:11.622: WARN/System.err(285):     at cpe495.smartapp.SmartApp$8.onClick(SmartApp.java:162)
04-05 23:20:11.622: WARN/System.err(285):     at android.view.View.performClick(View.java:2408)
04-05 23:20:11.632: WARN/System.err(285):     at android.view.View$PerformClick.run(View.java:8816)
04-05 23:20:11.632: WARN/System.err(285):     at android.os.Handler.handleCallback(Handler.java:587)
04-05 23:20:11.642: WARN/System.err(285):     at android.os.Handler.dispatchMessage(Handler.java:92)
04-05 23:20:11.642: WARN/System.err(285):     at android.os.Looper.loop(Looper.java:123)
04-05 23:20:11.685: WARN/System.err(285):     at android.app.ActivityThread.main(ActivityThread.java:4627)
04-05 23:20:11.685: WARN/System.err(285):     at java.lang.reflect.Method.invokeNative(Native Method)
04-05 23:20:11.692: WARN/System.err(285):     at java.lang.reflect.Method.invoke(Method.java:521)
04-05 23:20:11.702: WARN/System.err(285):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
04-05 23:20:11.702: WARN/System.err(285):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
04-05 23:20:11.711: WARN/System.err(285):     at dalvik.system.NativeStart.main(Native Method)
4

1 回答 1

6

您是正确的,需要 root 访问权限才能访问该文件。

作为一种解决方法,您可以创建一个活动或测试函数,将该文件复制到 SD 卡,以便您可以读取它。

编辑-这个答案包含将文件复制到 SD 卡的示例代码。

更新- 对于上面的答案,您需要在<manifest ... >标签后的清单中:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
于 2011-04-05T21:59:38.313 回答