在运行时从内部存储读取/写入一些文件

时间:2012-05-22 10:12:23

标签: android android-file

我正在开发一个程序,需要在运行时从sdcard或内部存储读取/写入一些文件。当我在手机中安装SD卡时它运行正常,但如果我卸载SD卡,我的应用程序会引发一些错误。 对于没有像Htc one x的卡槽或没有插入任何SD卡的手机,我需要做些什么?我怎么能在那些手机存储上写字? 我不想将此文件写入/data/data/my.app.package文件夹。我想写一些可以从其他应用程序读取文件的地方。 首先,我用这段代码检查存储状态,如果sdcard被插入和写入,我没有任何问题。但如果sdcard不存在,我真的不知道我该做什么。

string _location;  
if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
          _location=Environment.getExternalStorageDirectory()+"/myfolder/";
          Toast.makeText(context, _location, 1000).show();
      }
      else
      {
          _location="/myfolder/"
          Toast.makeText(context, Environment.getExternalStorageDirectory().toString(), 1000).show();

      }

      mysync mys=new mysync(); // Asynctasc that writes some file on _location path
      mys.execute(_location);

我很困惑,不幸的是我没有任何带有大内部存储空间的手机。请帮帮我。

1 个答案:

答案 0 :(得分:1)

  

我正在开发一个程序,需要在运行时从sdcard或内部存储读取/写入一些文件。

在此处,在您的问题标题中,您说想要写入内部存储空间。之后,您说不希望写入内部存储空间。

这是什么?

  

对于没有像Htc one x的卡槽或没有插入任何SD卡的手机,我需要做些什么?

外部存储!=“sdcard”。外部存储可以是设备制造商想要的任何内容,只要它符合兼容性定义文档的条款即可。因此,外部存储器可以是可移除的(例如,SD卡)(例如,板载闪存的专用部分)。而且,在Android 3.0+上,外部存储只是包含内部存储的同一分区上的一个特殊子目录。

您只关心外部存储是否可用。它应该几乎可以在Android 3.0+设备上使用。如果设备已插入主机并且主机已安装设备的外部存储(例如,作为Windows上的驱动器号),则在Android 1.x和2.x设备上将无法使用它。

  

如果sdcard不存在,我真的不知道我该做什么。

您要求用户从他们的主机上卸下他们的设备。或者,您决定在这些情况下写入内部存储。