2016-06-15 2 views
0

В моем классе MainActivity в методе onResume я начинаю метод writeFile. Класс, который содержит метод:FileNotFoundEception в FileInputStream в android

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

первый я ReadFile и добавить информацию для записи, но когда я пытаюсь прочитать файл я получаю FileNotFoundException в строке:

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

Почему?

ответ

1

Это означает, что файл действительно не существует. Сделайте это:

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

Вы можете прочитать о createNewFile()here. Он создает файл только в том случае, если он еще не существует.

+0

Да, спасибо, он работает. Должен ли я добавлять метод createNewFile для метода writeFile? или достаточно добавить в readFile metthod. – Delphian

+0

Не нужно, потому что в 'writeFile()' первый метод, который вызывается, называется 'readFile()'. –

+0

Спасибо за ваш ответ! – Delphian