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

时间:2014-06-04 05:31:37

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

加载数据的代码:

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

所以如果我添加 保存数据代码 进入 捕获 加载数据部分然后我能实现我想要的吗?

3 个答案:

答案 0 :(得分:5)

添加

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

以上

fis = openFileInput(FILENAME);

这将检查给定File是否存在FILENAME,如果它没有,则会创建一个新的。{/ p>

答案 1 :(得分:0)

如果您正在使用Android,为什么不使用API's solution for saving files

引用:

String filename = "myfile";
String string = "Hello world!";
FileOutputStream outputStream;

try {
  outputStream = openFileOutput(filename, Context.MODE_PRIVATE);
  outputStream.write(string.getBytes());
  outputStream.close();
} catch (Exception e) {
  e.printStackTrace();
}

您应该阅读整篇文档,他们很好地解释了创建或访问文件的基本方法,您还可以查看different ways of storing data

但关于你原来的问题:

  

所以如果我将保存数据代码添加到" FileNotFoundException"   抓住加载数据部分然后我可以实现我想要的吗?

是的,你可以实现它。

答案 2 :(得分:0)

试试这个:

public static void readData() throws IOException
{
    File file = new File(path, filename);
    if (!file.isFile() && !file.createNewFile()){
        throw new IOException("Error creating new file: " + file.getAbsolutePath());
    }

    BufferedReader r = new BufferedReader(new FileReader(file));
    try {
        // ...
        // read data
        // ...
    }finally{
        r.close();
    }
}

参考:Java read a file, if it doesn't exist create it