2014-03-01 4 views
0

OutputStreamWriter를 사용하여 다른 활동에서 작성한 텍스트 파일을 읽고 싶습니다. 이 Sale.java 내 readFromFile 방법입니다 :다른 활동의 파일 읽기

private int readFromFile(String request) { 

     int res = 0; 
     try { 
      //InputStream inputStream = openFileInput("dalassnums.txt"); 
      File file=new File("dalassnums.txt"); 
      InputStream inputStream = new FileInputStream(file); 

      if (inputStream != null) { 
       InputStreamReader inputStreamReader = new InputStreamReader(inputStream); 
       BufferedReader bufferedReader = new BufferedReader(inputStreamReader); 
       String receiveString = ""; 

       while ((receiveString = bufferedReader.readLine()) != null) { 
        String s=bufferedReader.readLine(); 
        if(receiveString==request) { 
         res=Integer.valueOf(s); 
         break; 
        } 
       } 

       inputStream.close(); 

      } 
     } 
     catch (FileNotFoundException e) { 
      Log.e("login activity", "File not found: " + e.toString()); 
      res=0; 

     } catch (IOException e) { 
      //Log.e("login activity", "Can not read file: " + e.toString()); 

     } 

     return res; 



    } 

그리고 이것은 MainActivity.java에서 writeToFile 방법입니다 :

private void writeToFile2(String numchar) { 
    try { 
     //File file=new File("dalassnums.txt"); 
     //OutputStream outputStream=new FileOutputStream(file); 
     OutputStreamWriter outputStreamWriter; 
     if(numchar=="1") outputStreamWriter = new OutputStreamWriter(openFileOutput("dalassnums.txt", Context.MODE_PRIVATE)); 
     else outputStreamWriter = new OutputStreamWriter(openFileOutput("dalassnums.txt", Context.MODE_APPEND)); 
     for(int k=0; k<imageNums.size();k+=2){ 
     outputStreamWriter.append(imageNums.get(k)); 
     outputStreamWriter.append("\n"); 
     outputStreamWriter.append(imageNums.get(k+1)); 
     outputStreamWriter.append("\n"); 
     } 
     outputStreamWriter.close(); 
    } 
    catch (IOException e) { 
     Log.e("Exception", "File write failed: " + e.toString()); 
    } 
} 

readFromFile을 수행, 그것은 파일을 찾을 수 없습니다 의미 0 반환 컨텍스트를 전달하는 것에 대해 읽었지만 전달할 컨텍스트를 알 수 없습니다. 그리고 컨텍스트를 전달하는 것 외에 다른 방법이 있는지 궁금합니다. 도움이 될 것입니다.

답변

2

사용 : openFileInputreadFromFile에서, 예를 들어 이쪽을 봐 :

if(numchar=="1") 

당신이해야

if(numchar.equals("1")) 

그렇지 않으면 :

openFileInput() and/or openFileOutput() i/o streams silently failing

또 다른 문제는이 잘못된 것입니다 참조 값을 비교하다. 티드 문자열 내용

+0

나는 이것을 처음 시도했는데 같은 문제가있다. –

+0

컨텍스트에 어떤 문제가 있습니까? 활동을 컨텍스트로 사용하십시오. Activity 내부에서'this '를 전달하거나 getApplicationContext를 사용하십시오. openFileInput/openFileOutput은 파일에 올바른 경로를 설정하므로 함께 사용해야합니다. – marcinj

+0

getApplicationContext를 사용했습니다. 변경된 사항이 없습니다. 여전히 0을 반환합니다./ –