2016-06-15 16 views
0

onResumeメソッドのMainActivityクラスでは、writeFileメソッドを開始します。androidのFileInputStreamのFileNotFoundEception

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

最初のI readFileのと書き込むための情報を追加しますが、私は、ファイルを読み込むしようとしたとき、私はラインでにFileNotFoundExceptionを得る:

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

なぜ?メソッドを含むクラス

答えて

1

これはファイルが実際に存在しないことを意味します。これを行う:

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

あなたはおよそcreateNewFile()hereを読むことができます。ファイルがまだ存在しない場合にのみ作成されます。

+0

はい、ありがとうございます。 writeFileメソッドにcreateNewFileメソッドを追加する必要がありますか?またはreadFileで追加するだけで十分です。 – Delphian

+0

'writeFile()'では、最初に呼び出されるメソッドが 'readFile()'であるため、不要です。 –

+0

ありがとうございました! – Delphian

関連する問題