Java 安装Android应用程序后,如何在内部存储器上创建目录?

Java 安装Android应用程序后,如何在内部存储器上创建目录?,java,android,directory,installation,Java,Android,Directory,Installation,我想有一个单独的文件夹,我将把所有的资源,我需要它的内部存储。由于我希望只创建一次此目录,我发现应该在应用程序的主要活动中创建它: protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); File directory = context.getDir("mydir", Co

我想有一个单独的文件夹,我将把所有的资源,我需要它的内部存储。由于我希望只创建一次此目录,我发现应该在应用程序的主要活动中创建它:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    File directory = context.getDir("mydir", Context.MODE_PRIVATE);
    Log.d("directory", directory.getAbsolutePath().toString());
} 
这看起来还可以,因为这是我在internet上能够找到的,但是我收到了大量错误,我可以访问目录路径的日志,而应用程序无法启动。知道为什么吗


另外,如果我每次在手机上运行Eclipse应用程序时都使用内部存储,那么它会自动删除上一个应用程序及其资源吗?还是我必须手动删除?如果您希望存储在外部存储SD卡上,则需要使用此功能

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

首先,确保阅读并了解应用程序可用的不同存储选项。谷歌在这方面有一篇很好的文章:

上面Andy的回答提到了Environment.getExternalStorageDirectory()(API级别7)用于写入SD卡或类似文件,但您应该记住,当用户卸载应用程序时,写入该位置的文件不会被删除。报告说:

应用程序不应直接使用此顶级目录,以避免污染用户的根命名空间

相反,如果您以API级别8及以上为目标,则应使用Context.getExternalCacheDir(),因为卸载应用程序时,该位置中的文件将被删除。如果确实希望文件在卸载后仍保持不变,则应使用Context.getExternalFilesDir()。还有getCacheDir()和getFilesDir()用于处理内部存储上的文件

正如在您的问题评论中提到的,您确实应该在此处发布错误,以便我们能够帮助您

PS我对回答问题不熟悉,所以我没有足够的代表来发布我回答中提到的所有函数的链接,而且我似乎无法对以前的帖子发表评论。

使用
getCacheDir()
。它返回文件系统上特定于应用程序的缓存目录的绝对路径。然后你可以创建你的目录

File myDir = new File(getCacheDir(), "folder");
myDir.mkdir();

File newfile=新文件(Environment.getExternalStorageDirectory()+“/specifyfoldername”,“nestedfoldername”);
direct.mkdir();
//它将在您的内部存储器中创建两个文件夹,第一个文件夹名为SpecificFolderName,另一个文件夹名为nestedfoldername
}

我认为Blackbelt的答案很好,但不想将其存储在内部缓存中(对于我试图制作的规范,它将被擦除并经常以这种方式写入) 所以我所做的是:

String path = "";

然后


Android studio在特定文件夹中下载视频:

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

  String path = Environment.getDataDirectory().getAbsolutePath().toString() + "/storage/emulated/0/appFolder";
  File mFolder = new File(path);
  if (!mFolder.exists()) {
      mFolder.mkdir();
  }
  File Directory = new File("/sdcard/kaizzan/");
  Directory.mkdirs();

字符串路径=Environment.getDataDirectory().getAbsolutePath().toString()+“/storage/emulated/0/appFolder”;
File mFolder=新文件(路径);
如果(!mFolder.exists()){
mkdir();
}
文件目录=新文件(“/sdcard/kaizzan/”);
mkdirs()目录;

我包括了所有必要的许可证这是sd卡的许可证。。我想要内部存储上的目录每个手机都有一个文件夹“SD卡”,可以用来存储你的文件夹。毫无意义,内部存储没有这样的权限,即使有,也与访问外部存储无关。如果你从手机上删除(卸载)应用程序,它将删除存储在内部存储器上的所有文件。但是,如果您只是“更新”应用程序(而不删除旧的应用程序),则内部存储上的文件将保留在那里。如果出现错误,请从日志猫中发布错误,以便我们可以帮助您使用这两个权限。没有这样的权限。文件myDir=新文件(getCacheDir()+“/”+父目录名、子目录名);myDir.mkdir();如果我想在我的新目录(父目录)中创建一个子目录(子目录),上面的代码应该工作吗?否。
File myDir=new File(getCacheDir(),parent\u dir\u name)
myDir.mkdir()
File childDir=new File(myDir,child\u dir\u name)
childDir.mkdir()
String path = "";
if (path.isEmpty()) {
        File file = new File(this.getFilesDir(), "my_dir_identfiying_name/");
        path = file.getAbsolutePath();
        Log.d("PATH", path);
    }
  <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />          

  String path = Environment.getDataDirectory().getAbsolutePath().toString() + "/storage/emulated/0/appFolder";
  File mFolder = new File(path);
  if (!mFolder.exists()) {
      mFolder.mkdir();
  }
  File Directory = new File("/sdcard/kaizzan/");
  Directory.mkdirs();