Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/182.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 创建和读取一次性创建的文件_Java_Android - Fatal编程技术网

Java 创建和读取一次性创建的文件

Java 创建和读取一次性创建的文件,java,android,Java,Android,我想在文件中存储字符串列表 我只需要创建它一次,然后我会用编程的方式在上面读写 我的问题是,我应该在文件系统中的什么位置(手动)创建文件,以便它最适合读写 谢谢。您可以在应用程序目录中创建文件,这样除了您的应用程序之外,没有人可以访问它 getApplicationContext().getFilesDir().getAbsolutePath(); 或者在sd卡上 File externalStorage = Environment.getExternalStorageDirectory();

我想在文件中存储字符串列表

我只需要创建它一次,然后我会用编程的方式在上面读写

我的问题是,我应该在文件系统中的什么位置(手动)创建文件,以便它最适合读写


谢谢。

您可以在应用程序目录中创建文件,这样除了您的应用程序之外,没有人可以访问它

getApplicationContext().getFilesDir().getAbsolutePath();
或者在sd卡上

File externalStorage = Environment.getExternalStorageDirectory();
如果你想让其他人访问它,或者如果你的文件很大


如果您打算手动创建文件,那么我认为SD卡是唯一的选择,除非您有根手机或使用仿真器。

在资产文件夹中添加文件,那么在新安装后它将很明显。

这取决于具体情况

在SD卡上创建文件的问题在于,访问该文件需要特殊权限。如果这个应用程序只适合你自己,那就太酷了。如果你想通过Google MarketPlay(或现在叫它什么)发布它,请知道有些人(包括我自己)倾向于查看权限并问“为什么做X的应用程序需要做Y的权限?”有时因为它而不安装该应用程序

如果手动部分由应用程序的用户完成,请务必将其存储在SD卡上。这是唯一一个标准的地方,根本没有根用户可以访问

但是,一般来说,存储数据的更好位置是在/data/data/packagename中。有关更多详细信息,请参阅Android


Shachar

如果您将文件添加到资产文件夹中,它将作为singelton添加到所有应用程序的.apk中
if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())) 
    {
         //SDcard is there
         File f=new File("/sdcard/YOURFILE.txt");
         if (!f.exists())
         {
             //File created only for first time
             f.createNewFile();
           //create inputstream and write it to your file
           OutputStream out=new FileOutputStream(f);
           byte buf[]=new byte[1024];
           int len;
           while((len=inputStream.read(buf))>0)
           out.write(buf,0,len);
           out.close();
           inputStream.close();
           System.out.println("\nData Written");
         }
         else {  //  read/ write SECOND TIME  }
  }