【问题标题】:Hide a file from SD card隐藏 SD 卡中的文件
【发布时间】:2014-01-08 04:00:42
【问题描述】:

您好,我在 sd 卡中创建了一个文件夹,其中包含如下所示的数据库

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();
        }
    }

但是,这不起作用。不知道如何隐藏 SDcard 中的文件。请帮忙。谢谢!

【问题讨论】:

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


【解决方案1】:

如果您使用的是 Java 7,则可以像这样使用新的 java.nio.file.attribute 包:

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

或者,如果您使用的是旧版本的 Java 和/或想使用运行时执行此操作,请尝试以下操作:

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();
        }
    }

【讨论】:

  • 我尝试了第二个,我得到,java.io.IOException: Error running exec()。命令:[cmd.exe, /C, attrib, -s, -h, -r/mnt/sdcard/EaseTrailCount] 工作目录:null 环境:null
  • 我认为你还没有创建目录。所以先创建目录然后隐藏它
  • 我已经创建了目录,然后使用此代码。我应该指定数据库文件路径还是包含数据库的文件夹路径
  • 或者试试这个。在文件夹中放一个名为 .nomedia 的文件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-05
  • 1970-01-01
  • 1970-01-01
  • 2012-11-22
  • 2011-08-08
相关资源
最近更新 更多