安卓如何检查文件是否存在,否则创建一个



我有以下问题。我想把一个名为data.xml的文件放在sdcard/appname文件夹中,并用它来读取和写入应用程序数据。

所以,当我的主要活动创建时,我需要检查这个文件是否存在:

public class appname extends ListActivity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.no_elements_l);
      File file = getBaseContext().getFileStreamPath("/sdcard/appname/data.xml");
      if(file.exists()) { 
            return;
      } else {
            // create a File object for the parent directory
            File MTdirectory = new File("/sdcard/appname/");
            // have the object build the directory structure, if needed.
            MTdirectory.mkdirs();
            // create a File object for the output file
            File outputFile = new File(MTdirectory, "data.xml");
            // now attach the OutputStream to the file object, instead of a String representation
            FileOutputStream DataFile = new FileOutputStream(outputFile);
      }

但我在最后一行有未处理的异常类型FileNotFoundException。怎么了?使用权限WRITE_EEXTERNAL_STORAGE已添加到清单中。

不要硬编码SDCard文件路径。不同的设备和API可能会有所不同。

例如,Froyo是/mnt/sdcard/,而我的Galaxy Nexus(JellyBean)是/storage/sdcard0/

Android开发者指南建议使用Environment.getExternalStorageDirectory()

试着这样做:

// Some Code
String path = Environment.getExternalStorageDirectory().getPath() + "/appname/";
File file = getBaseContext().getFileStreamPath(path);
// More Code

路径"/sdcard/appname"是否存在?在检查子目录"appname"之前,先检查文件。在你试图访问里面的文件之前,你需要检查它是否存在

此外,如果您只是需要该文件来读写应用程序数据,为什么不使用内部存储-少一个清单权限:)->在此处读取内部存储

相关内容

  • 没有找到相关文章

最新更新