2014-01-30 2 views
0

res (res/raw) 내에 원시 폴더를 만들었고 my_text_file.txt 파일도 만들었습니다.
이제이 파일에 뭔가를 쓰고 싶습니다.
일부 코드를 작성했지만 간단한 문자열 (예 :)을 쓸 수 없습니다.Android에서 리소스 파일에 텍스트를 쓸 수 없습니다.

이것은 내 코드입니다.

사람이 내 코드에 어떤 문제가 있는지 알고 있다면, 내가

try { 
       FileOutputStream fos = openFileOutput("my_text_file.txt", 
         Context.MODE_PRIVATE); 
       OutputStreamWriter osw = new OutputStreamWriter(fos); 
       osw.write("17"); 
       osw.flush(); 
       osw.close(); 
      } catch (java.io.IOException e) { 
       // do something if an IOException occurs. 
      } 
+0

당신은 리소스 파일에 쓸 수 없습니다

는 만 응용 프로그램을 사용할 수이 코드를 사용 데이터를 기록합니다. .. – gunar

+0

그것은 가능하지 않습니까? – user3233500

+0

가능한 [안드로이드 및 ObjectOutputStream 리소스 파일] (http://stackoverflow.com/questions/8747713/android-and-objectoutputstream-to-resource-file) – kabuko

답변

0

당신은 당신의 파일을 읽을 수는 있지만 리소스 폴더에있는 파일을 변경할 수 없습니다 도와주세요. 할 수있는 일은 외부 저장소에 파일을 저장 한 다음 파일을 변경하는 것입니다.

망가 권한을 설정하는 것을 잊지 :

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
+0

감사합니다 또한이 사용 권한을 사용합니다 ..my 문제 is.first 시간이 내가 코드 whitch 쓰기 sdcard에 txt 파일을 만들 수 있지만이 파일을 원하는 것만 me.meybe 문제 해결책은 sdcard에이 txt 파일을 숨길 수 있지만 내 옵션에 대해 불가능합니다 – user3233500

+0

이유를 설명해 주시겠습니까? 어쩌면 다른 해결책을 시도해 볼 수 있습니다. 폴더 이름 ".myapp/text.txt"앞에 점을 찍을 수 있습니다.이 방법으로 사용자는 Android 또는 Unix 기반 PC에서 콘텐츠에 액세스 할 수 없습니다 – GhostDerfel

+0

파일 만 표시하려면 다음과 같이 애플리케이션 폴더에 저장할 수 있습니다. 'String absoluteFilePath = getApplicationContext(). getFilesDir(). getPath() + "/"+ fileName; FileOutputStream fileOut = new FileOutputStream (absoluteFilePath); '그렇게하면 앱에서만 액세스 할 수 있습니다. – Piovezan

0

당신은 파일 자원에 쓸해야한다. 컴파일하기 전에 여기에 넣은 데이터를 저장하는 것이 있습니다. 런타임시, 파일에 일부 정보를 저장하려면 당신은 이런 식으로 뭔가를 할 수 있습니다

public static void writeToFile(String fileName, String encoding, String text) { 
    Writer writer = null; 

    try { 
     writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(fileName), encoding)); 
     writer.write(text); 
    } catch (IOException ex) { 
     Log.e(TAG, "", ex); 
    } finally { 
     try { 
      writer.close(); 
     } catch (Exception ex) { 
     } 
    } 
} 

는 SD 카드 경로를 찾으려면이 방법을 사용할 수 있습니다

Environment.getExternalStorageState() 

그래서 당신이 사용할 수 있습니다 이 같은 방법

writeToFile(Environment.getExternalStorageState() + "/" + "my_text_file.txt", "UTF-8", "my_text"); 

그리고 권한

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
을 설정하는 것을 잊었다하지 않는다

UPD : 당신은 몇 가지 보안 정보를 저장하기 위해 SD 카드를 사용하지 말아야합니다! 더 많은 정보 here.

public static void writeToInternalFile(String fileName, String text) { 
    FileOutputStream fos = openFileOutput(fileName, Context.MODE_PRIVATE); 
    fos.write(text.getBytes()); 
    fos.close(); 
} 

이 파일에서을 읽으려면 :

public static String readFromInternalFile(String fileName) { 
    FileInputStream fis = openFileInput(, Context.MODE_PRIVATE); 
    StringBuilder sb = new StringBuilder(); 
    int ch; 
    while((ch = fis.read()) != -1){ 
     sb .append((char)ch); 
    } 
    return sb.toString(); 
} 
관련 문제