【问题标题】:Unable to write a txt file to phone memory on android [duplicate]无法在android上将txt文件写入手机内存[重复]
【发布时间】:2012-09-29 13:29:47
【问题描述】:

我尝试将一个txt文件写入手机内存。

我使用这个代码:

FileOutputStream out3 = null;
try { 
    out3 = new FileOutputStream(
        Environment.getRootDirectory() + "/a_directory/b.txt");
} catch (FileNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

但是我得到一个错误。它说out3null。为什么?

当我使用Environment.getExternalStorageDirectory()时,它正在工作,但我想写入手机内存?

【问题讨论】:

  • 似乎您可能需要有根设备才能写入根目录。你试过developer.android.com/reference/android/content/… 吗?
  • 我试图让您的问题易于理解。下次请尝试自己做...
  • 请使用更具描述性的标题。如果您能提供更多关于您在问题中想要达到的目标的信息,那也很好。
  • 你也应该发布你的堆栈跟踪。
  • 没找到好吗? @DiegoPlentz 没有找到。

标签: java android fileoutputstream android-file


【解决方案1】:

试试下面的代码:

        File myExternalFile = new File(getExternalFilesDir(filepath), "file.txt");


                     try {
        FileOutputStream fos = new FileOutputStream(myExternalFile);
          OutputStreamWriter osw = new OutputStreamWriter(fos);
          osw.append(text.getEditableText().toString());
          osw.close();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

【讨论】:

  • 我不想写外存?
  • 那么不要接受关于写入外部存储器的答案...
【解决方案2】:

没有root是不能写入内存的,Android操作系统是这样写的,是为了保护操作系统。取而代之的是,在用于铃声和其他个性化数据的主存储器上,有一个格式化的空间量,就像一个 sd 卡。所有机器人都被格式化为拥有或使用 SD 卡,即使 Galaxy Nexus 也有内部 SD 卡。将文件写入卡将影响更大的设备阵列。否则,您将需要 root 访问权限,并且只有 10% 的 android 设备是 root。

【讨论】:

  • 如果手机没有sdcard怎么办?我必须在手机上写一个 txt 文件。我在哪里可以写?
  • 简单的答案是你不能。要保存一些东西,而不是编写文本文件以便以后阅读,您可以使用数据库 (vogella.com/articles/AndroidSQLite/article.html)
  • 没有卡的手机只有很少的数据,减去内置内存的nexus系列和平板电脑仍然保存在“sd卡”文件夹中。您应该为卡写支票,然后写信给卡。否则你需要root权限
  • 这个答案是完全错误的。每个 android 应用程序始终在设备的内部存储器中拥有自己的存储区域。请参阅有关“保存文件”的开发人员文档
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多