android 中 FileInputStream 中的 FileNotFoundEception

FileNotFoundEception in FileInputStream in android

在我的 MainActivity class 的 onResume 方法中,我启动了 writeFile 方法。 class 包含方法:

public class CacheFile {

private static final String TAG = "CacheFile";
private static final String mFileName="cachefile.txt";
private static File file;

//Write data into the file
public static void writeFile(Context context, String data) {
    FileOutputStream outputStream=null;
    String oldData=readFile(context)+"&"+data;
    try {
        file = new File(context.getCacheDir(), mFileName);
        outputStream = new FileOutputStream(file);
        if(data!=null) {
            outputStream.write(oldData.getBytes());
        }
    } catch (IOException e) {
             e.printStackTrace();
    }finally {
        if(outputStream!=null){
            try{
                outputStream.close();
            }catch (Exception e){
               e.printStackTrace();
            }
        }
    }
}

//Read from file
public static String readFile(Context context) {
    BufferedReader inputStream = null;
    FileInputStream fis = null;
    StringBuffer buffer = new StringBuffer();
    String line;

    try {
          file = new File(context.getCacheDir(), mFileName);
          fis=new FileInputStream(file);
          inputStream = new BufferedReader(new InputStreamReader(fis));
          while ((line = inputStream.readLine()) != null) {
            buffer.append(line);
          }
    } catch (IOException e) {
            e.printStackTrace();
    }finally {
        if(inputStream!=null){
            try{
                inputStream.close();
            }catch (Exception e){
                  e.printStackTrace();
            }
        }
        if(fis!=null){
            try{
                fis.close();
            }catch (Exception e){
                e.printStackTrace();
            }
        }
    }
    return buffer.toString();
}


public static void deleteFile(Context context){
  if(file!=null){
     file.delete();
  }
}
}

首先,我读取文件并添加写入信息,但是当我尝试读取文件时,我在行中得到 FileNotFoundException

fis=new FileInputStream(file) (readfile method). 

为什么?

这意味着该文件确实不存在。这样做:

file.createNewFile();
fis = new FileInputStream(file);
// Other code

您可以阅读有关 createNewFile() here 的内容。如果文件不存在,它只会创建文件。