2013-12-17 4 views
-2

xml 폴더에서 xml 파일을 읽을 필요가 있습니다. 그러나 나는 getting no such file 오류입니다. 아무도 내가 안드로이드에 XML 폴더에서 XML 파일을 읽을 수 말해 줄래?xml 폴더에서 파일을 읽으십시오. Android

InputSource inputSource = new InputSource(getResources().openRawResource(
       getResId("R.xml." + fileName.substring(0,fileName.length() - 4), 
       AlbumDetails.class))); 

그리고 로그 캣 출력 :

여기 내 코드입니다 고해상도에서

12-17 14:32:59.513: W/System.err(3563): java.lang.NoSuchFieldException: R.xml.quran_simple 
12-17 14:32:59.513: W/System.err(3563):  at java.lang.Class.getDeclaredField(Class.java:631) 
12-17 14:32:59.513: W/System.err(3563):  at com.darkovski.quran.AlbumDetails.getResId(AlbumDetails.java:250) 
12-17 14:32:59.513: W/System.err(3563):  at com.darkovski.quran.AlbumDetails$3.doInBackground(AlbumDetails.java:282) 
12-17 14:32:59.513: W/System.err(3563):  at com.darkovski.quran.AlbumDetails$3.doInBackground(AlbumDetails.java:1) 
12-17 14:32:59.513: W/System.err(3563):  at android.os.AsyncTask$2.call(AsyncTask.java:264) 
12-17 14:32:59.513: W/System.err(3563):  at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305) 
12-17 14:32:59.513: W/System.err(3563):  at java.util.concurrent.FutureTask.run(FutureTask.java:137) 
12-17 14:32:59.513: W/System.err(3563):  at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:208) 
12-17 14:32:59.513: W/System.err(3563):  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076) 
12-17 14:32:59.513: W/System.err(3563):  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569) 
12-17 14:32:59.513: W/System.err(3563):  at java.lang.Thread.run(Thread.java:856) 
12-17 14:32:59.513: W/ResourceType(3563): No known package when getting value for resource number 0xffffffff 
12-17 14:32:59.513: W/dalvikvm(3563): threadid=16: thread exiting with uncaught exception (group=0x2b542210) 
12-17 14:32:59.523: E/Burstly SDK v.1.34.0.46238 BackgroundUncaughtExceptionHandler(3563): 17-12-13 14:32:59:524 Unexpected problem on thread AsyncTask #3: An error occured while executing doInBackground() 
12-17 14:32:59.523: E/Burstly SDK v.1.34.0.46238 BackgroundUncaughtExceptionHandler(3563): 17-12-13 14:32:59:530 java.lang.RuntimeException: An error occured while executing doInBackground() 
12-17 14:32:59.523: E/Burstly SDK v.1.34.0.46238 BackgroundUncaughtExceptionHandler(3563): at android.os.AsyncTask$3.done(AsyncTask.java:278) 
12-17 14:32:59.523: E/Burstly SDK v.1.34.0.46238 BackgroundUncaughtExceptionHandler(3563): at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273) 
12-17 14:32:59.523: E/Burstly SDK v.1.34.0.46238 BackgroundUncaughtExceptionHandler(3563): at java.util.concurrent.FutureTask.setException(FutureTask.java:124) 
12-17 14:32:59.523: E/Burstly SDK v.1.34.0.46238 BackgroundUncaughtExceptionHandler(3563): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307) 
12-17 14:32:59.523: E/Burstly SDK v.1.34.0.46238 BackgroundUncaughtExceptionHandler(3563): at java.util.concurrent.FutureTask.run(FutureTask.java:137) 
12-17 14:32:59.523: E/Burstly SDK v.1.34.0.46238 BackgroundUncaughtExceptionHandler(3563): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:208) 
12-17 14:32:59.523: E/Burstly SDK v.1.34.0.46238 BackgroundUncaughtExceptionHandler(3563): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076) 
12-17 14:32:59.523: E/Burstly SDK v.1.34.0.46238 BackgroundUncaughtExceptionHandler(3563): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569) 
12-17 14:32:59.523: E/Burstly SDK v.1.34.0.46238 BackgroundUncaughtExceptionHandler(3563): at java.lang.Thread.run(Thread.java:856) 
12-17 14:32:59.523: E/Burstly SDK v.1.34.0.46238 BackgroundUncaughtExceptionHandler(3563): Caused by: android.content.res.Resources$NotFoundException: Resource ID #0xffffffff 
12-17 14:32:59.523: E/Burstly SDK v.1.34.0.46238 BackgroundUncaughtExceptionHandler(3563): at android.content.res.Resources.getValue(Resources.java:1018) 
12-17 14:32:59.523: E/Burstly SDK v.1.34.0.46238 BackgroundUncaughtExceptionHandler(3563): at android.content.res.Resources.openRawResource(Resources.java:943) 
12-17 14:32:59.523: E/Burstly SDK v.1.34.0.46238 BackgroundUncaughtExceptionHandler(3563): at android.content.res.Resources.openRawResource(Resources.java:925) 
12-17 14:32:59.523: E/Burstly SDK v.1.34.0.46238 BackgroundUncaughtExceptionHandler(3563): at com.darkovski.quran.AlbumDetails$3.doInBackground(AlbumDetails.java:281) 
12-17 14:32:59.523: E/Burstly SDK v.1.34.0.46238 BackgroundUncaughtExceptionHandler(3563): at com.darkovski.quran.AlbumDetails$3.doInBackground(AlbumDetails.java:1) 
12-17 14:32:59.523: E/Burstly SDK v.1.34.0.46238 BackgroundUncaughtExceptionHandler(3563): at android.os.AsyncTask$2.call(AsyncTask.java:264) 
12-17 14:32:59.523: E/Burstly SDK v.1.34.0.46238 BackgroundUncaughtExceptionHandler(3563): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305) 
12-17 14:32:59.523: E/Burstly SDK v.1.34.0.46238 BackgroundUncaughtExceptionHandler(3563): ... 5 more 

답변

0

을 사용할 수 있습니다

XmlResourceParser xrp = ctx.getAssets().openXmlResourceParser("res/xml/castle1.tmx"); 

다른 고해상도 폴더에서 구문 분석 할 이것을 사용

InputStream inputStream = getResources().openRawResource(R.raw.fileName);

+0

이렇게하면 파일을'raw' 폴더로 옮겨야합니까? –

+0

예. 당신이 거기에서 액세스하려고하면 –

+0

예이 방법을 원한다면 ... 내 대답을 시도 할 수 있습니다 .. –

0

/자산/폴더에 그렇지 않은 반면, 파일, 미리 컴파일 된 모든 XML 폴더.

그래서 당신은 당신이 단순히 원료 자원으로 XML을 넣어 그것의 InputStream를 필요로하는 경우 사용

InputStream object = this.getResources() 
       .openRawResource(R.raw.fileName); 
-1
InputStream is = getResources().getAssets().open("abc.txt"); 
String result= convertStreamToString(is); 

public static String convertStreamToString(InputStream is) 
     throws IOException { 
     Writer writer = new StringWriter(); 
    char[] buffer = new char[2048]; 
    try { 
     Reader reader = new BufferedReader(new InputStreamReader(is, 
       "UTF-8")); 
     int n; 
     while ((n = reader.read(buffer)) != -1) { 
      writer.write(buffer, 0, n); 
     } 
    } finally { 
     is.close(); 
    } 
    String text = writer.toString(); 
    return text; 
} 

이 코드에서 "assests"대신 폴더를 사용하십시오.

관련 문제