2016-06-15 5 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