从SD卡隐藏文件

时间:2014-01-08 04:00:43

标签: android android-sqlite sd-card android-sdcard

您好我已经在sd卡中创建了一个文件夹,其中包含一个db,如下所示

public Databasehandler(Context context) 
{
    //super(context, DATABASE_NAME, null, DATABASE_VERSION);
    super(context, Environment.getExternalStorageDirectory()+ File.separator + "MyAppFolder"+ "/"+DATABASE_NAME, null, DATABASE_VERSION);
}

现在,我正在尝试隐藏此文件,以使其无法访问。我尝试了以下代码。

 final String NOMEDIA_FILE = ".nomedia";

    path = new File(Environment.getExternalStorageDirectory().getAbsolutePath()+ File.separator + "MyAppFolder" );
    path.mkdirs();

    file= new File(path,NOMEDIA_FILE);
    if (!file.exists()) 
    {
        try 
        {
            file.createNewFile();
            Log.e("NOMEDIA_FILE"," ");
        }
        catch (IOException e) 
        {
            e.printStackTrace();
        }
    }

但是,这不起作用。不确定如何在SD卡中隐藏文件。请帮忙。谢谢!

1 个答案:

答案 0 :(得分:0)

如果您使用的是Java 7,则可以使用新的java.nio.file.attribute包,如下所示:

Path path = FileSystems.getDefault().getPath("/j", "sa");
Files.setAttribute(path, "dos:hidden", true);

或者,如果你使用的是旧版本的Java和/或想要使用Runtime来实现它,请试试这个:

Process process = Runtime.getRuntime().exec("cmd.exe /C attrib -s -h -r your_path"); 

你可以像这样使用它

final String NOMEDIA_FILE = ".nomedia";

    path = new File(Environment.getExternalStorageDirectory().getAbsolutePath()+ File.separator + "MyAppFolder" );
    path.mkdirs();

    file= new File(path,NOMEDIA_FILE);
    Files.setAttribute(path, "dos:hidden", true);

 Process process = Runtime.getRuntime().exec("cmd.exe /C attrib -s -h -r"+path);
    if (!file.exists()) 
    {
        try 
        {
            file.createNewFile();
            Log.e("NOMEDIA_FILE"," ");
        }
        catch (IOException e) 
        {
            e.printStackTrace();
        }
    }