0

我的应用程序从 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();
    }
}

没有例外。

我想这与“。”有关。在名字里。如果我尝试相同的方法,则会创建文件。

谢谢你的帮助。

4

2 回答 2

1

尝试使用以下示例

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

        }
    }
于 2012-07-19T18:58:21.130 回答
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();
    }
}
于 2012-07-19T19:08:09.257 回答