2017-05-19 3 views
0

심각한 문제가 있습니다. 데이터를 파일로 내보내고 코드를 okey로 가져와야합니다. 오류나 예외는 없습니다. 코드는 여기에 있습니다.Android Libgdx, 내부 파일에 어떻게 쓸 수 있습니까?

public static void writeString(String path, String line, boolean append){ 
    FileHandle file = Gdx.files.local(path); 
    file.writeString(line, append); 
} 

'prueba.txt'파일이 비어 있습니다. 나는 여기에 코드를 사용

Utilities.writeString("prueba.txt", "Hello world!", false); 
System.out.println("OUTPUT: "+Utilities.getLine("prueba.txt")); 

을 그리고 그 출력입니다 :

I/System.out에 : OUTPUT : PC에

모두는 안드로이드 난에, 좋아요 작동 '오류'

PD가 내 영어에 대한 미안, 아주 나쁜 :/

+0

문서를 확인하십시오. Android에서는 내부 메모리에 쓸 수 없습니다. – Tenfour04

+0

전체 경로를 사용하십시오. 뿐만 아니라 파일 이름. Android에서는 내부, 외부 및 이동식 메모리에 쓸 수 있습니다. – greenapps

+0

@MrVansork'Utilities.getLine()'메소드의 코드를 보여 주시겠습니까? – Aryan

답변

0

에서만 읽을 수 LibGdx의 내부 파일 저장소에 쓸 수 없습니다.

FileHandle fileHandle= Gdx.files.internal(String path); 

동일한에 대한 LibGdx의 로컬 파일 스토리지를 사용할 수 있습니다. Android에 Internal storage이라는 저장 용량이 있습니다. 이 저장소를 읽고 쓸 수 있지만 응용 프로그램의 개인 저장소이므로 응용 프로그램 만 액세스 할 수 있습니다. 코드 아래

FileHandle file = Gdx.files.local(String path); 

로컬 파일 저장소에 저장 prueba.txtHELLO WORLD 쓰기에 충분하다. 안드로이드 타겟 SDK는 API 23 런타임을 필요보다 크거나 같으면

FileHandle file = Gdx.files.local("prueba.txt"); 
file.writeString("HELLO WORLD", false);   //write to file 
System.out.println(charString=file.readString()); //read file 

당신이 AndroidManifest.xml 파일

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

이 권한에 대한이 두 가지 권한을했는지 확인이 충분하지 않습니다 - 귀하의 EXTERNAL_STORAGE와 관련된 모든 작업을 진행하기 전에 사용자의 허가를 받아야합니다. 현재 targetSdkVersion에 대해 안드로이드 build.gradle 파일의 defaultConfig를 확인하십시오 (해당 파일이없는 경우) AndroidManifest.xml 파일을 확인하십시오.

BufferedWriter outColF = null; 
    try { 
     if(!Gdx.files.local(DIR).exists()) 
      Gdx.files.local(DIR).mkdirs(); 
     if(YOUR_FILE.exists()) 
      YOUR_FILE.delete(); 
     outColF = new BufferedWriter(new OutputStreamWriter(YOUR_FILE.write(true))); 
     outColF.write(OBJECT); 
     } catch (Throwable e) { 
    } finally { 
     try { 
      if (outColF != null) outColF.close(); 

     } catch (IOException e) { 
     } 
    } 

이 방법은 안드로이드 및 데스크톱에서 작동 :

+0

나는 노력했지만 왜 제대로 작동하지 않는지 모르겠다. 안드로이드 매니페스트에는 외부 및 내부 스토리지에서 읽기 및 쓰기 권한을 부여 받았기 때문에 PC에서이 문제를 이해할 수 없다. 제대로 작동하지만 Android에서는 Gdx.files를 사용하지 않습니다.local(), 내 SDK API 버전은 25입니다. – MrVansork

+0

Android에서 테스트 했으므로 제대로 작동합니다. 'Utilities.getLine()'메소드의 코드를 표시 할 수 있습니까? – Aryan

+0

public static String getLine (문자열 경로) { 문자열 줄 = Gdx.files.internal (경로). readString(); 반송 라인; } – MrVansork

0

추가보십시오 :

file.close(); 

을 줄 뒤에 :

file.writeString(....) 
0

가장 좋은 방법은, BufferedWriter의이 같은 뭔가를해야만 사용할 수 있습니다.