读取文件,如果它不存在则创建

Arj*_*eja 3 android fileinputstream fileoutputstream

老实说,我已经搜索了很多这样的任务,所以我最终尝试了各种方法,但没有任何工作,直到我最终得到这个代码.它完全适合我,所以我不想改变我的代码.

我需要的帮助是将这个代码放在一个开始读取文件的方式,但如果文件不存在,那么它将创建一个新文件.

保存数据的代码:

String data = sharedData.getText().toString();
try {
        fos = openFileOutput(FILENAME, MODE_PRIVATE);
        fos.write(data.getBytes());
        fos.close();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
Run Code Online (Sandbox Code Playgroud)

加载数据的代码:

FileInputStream fis = null;
        String collected = null;
        try {
            fis = openFileInput(FILENAME);
            byte[] dataArray = new byte [fis.available()];
            while (fis.read(dataArray) != -1){
                collected = new String(dataArray); 
            }
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally {
            try {
                fis.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
Run Code Online (Sandbox Code Playgroud)

所以,如果我添加保存数据的代码 的"FileNotFoundException异常" 捕获的的数据加载部分,那么我可以实现我想要什么?

Apo*_*orv 6

File file = new File(FILENAME);
if(!file.exists())
{  
   file.createNewFile()
   // write code for saving data to the file
}
Run Code Online (Sandbox Code Playgroud)

以上

fis = openFileInput(FILENAME);
Run Code Online (Sandbox Code Playgroud)

这将检查是否存在File给定的FILENAME,如果不存在则会创建一个新的.