在Android中创建.nomedia文件不起作用

时间:2012-07-19 18:52:44

标签: android file sd-card

我的应用程序创建并使用SD卡中的一些图像。 这些图像显示在设备的图库中,但我不想要那样。 所以我试图在这个目录中创建一个.nonmedia文件,但我的问题是这个文件不会被创建。

下面是代码:

public void createNonmediaFile(){
    String text = "NONEMEDIA";
    String path = Environment.getExternalStorageDirectory().getPath() + "/" +  AVATARS + "/.nonmedia";
    FileOutputStream fos;
    try {
        fos = new FileOutputStream(path);
        fos.write(text.getBytes());
        fos.close();
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

没有例外。

我猜它与“。”有关。在名字里。如果我尝试相同的操作,则会创建文件。

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

尝试使用以下示例

    File file = new File(directoryPath, ".nomedia");
    if (!file.exists()) {
        try {
            file.createNewFile();
        }
        catch(IOException e) {

        }
    }

答案 1 :(得分:0)

在你的android-manifest文件中加入以下权限:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

然后下面的代码应该可以正常工作:

private static final String AVATARS = "avatars";
public void createNonmediaFile(){
    String text = "NONEMEDIA";
    String path = Environment.getExternalStorageDirectory().getPath() + "/" +  AVATARS + "/.nonmedia";
    String f = Environment.getExternalStorageDirectory().getPath() + "/" +  AVATARS ;
    FileOutputStream fos;
    try {
        File folder = new File(f);
        boolean success=false;
        if (!folder.exists()) {
            success = folder.mkdir();
        }
        if (true==success) {
            File yourFile = new File(path);
            if(!yourFile.exists()) {
                yourFile.createNewFile();
            } 
        } else {
        // Do something else on failure 
        }
        fos = new FileOutputStream(path);
        fos.write(text.getBytes());
        fos.close();
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
}