2015-09-06 191 views
0

我使用下面的代码写入到SD卡上的文件时发生的事情:没有尝试写入SD卡的Android

File dir =new File(android.os.Environment.getExternalStorageDirectory(),"MyFolder"); 
    if(!dir.exists()) 
    { 
     dir.mkdirs(); 
    } 
    String filename= "MyDoople.txt"; 
    try 
    { 
     File f = new File(dir+File.separator+filename); 

     FileOutputStream fOut = new FileOutputStream(f); 
     OutputStreamWriter myOutWriter = new OutputStreamWriter(
       fOut); 
     myOutWriter.append("Mytest"); 
     myOutWriter.close(); 
     fOut.close(); 
     Toast.makeText(getBaseContext(), 
       "Text Updated", 
       Toast.LENGTH_SHORT).show(); 
    } 
    catch(Exception e) 
    { 
     e.printStackTrace(); 
    } 

然而,当我跑我的应用程序,然后去检查SD卡,那里什么都没有。为什么我没有看到我创建的文件?我正在使用android jellybean 4.1,并在清单文件中添加了写入权限。

+0

在你捕获,变化'printStackTrace'到'Log.e( “标签”, “消息”,异常)',以便如果有一个以显示错误。 – xiaomi

+0

否则不会显示错误? – fosho

+0

当试图添加该行时,它会抱怨最后一个参数异常 – fosho

回答

1

从你的代码,你下主要外部存储写入到文件夹“MyFolder文件”。

什么是设备使用的是?它是否有额外的SD卡内存储?如果是,那么你的文件被写入内部存储器,但不是SD卡。

编辑: 要访问SD卡,只需用SD卡路径替换android.os.Environment.getExternalStorageDirectory()即可。

这不是一件容易的事找到SD卡的路径。

一种方法是使用ContextCompat.getExternalFilesDirs(context, null),返回值的第一个元素将是相同的android.os.Environment.getExternalStorageDirectory(),第二个元素将在sdcard的某处。

但是,可能取决于你的android版本,返回的目录可能是SD卡上的子目录,即你的应用程序特定的目录而不是SD卡的根目录。如果您想查找根目录,您必须检查并手动更改它。

http://developer.android.com/reference/android/support/v4/content/ContextCompat.html#getExternalFilesDirs%28android.content.Context,%20java.lang.String%29

+0

该设备是一个承上启下5 – fosho

+0

并且是它除了拥有SD卡 – fosho

+0

我如何才能让其写入SD卡内部存储? – fosho