Kann XML Datei von SD Karte nicht lesen

  • Antworten:1
  • Bentwortet
Michael H.
  • Forum-Beiträge: 17

28.09.2012, 11:11:15 via Website

Hallo,

ich lade über eine URL eine XML auf den internen SD Speicher und möchte diese dann mit einem SAX Parser weiterbearbeiten. Logcat wirft aber immer die Fehlermeldung
1java.io.FileNotFoundException: /mnt/sdcard/aberjetzt.xml: open failed: ENOENT (No such file or directory)

Meine Downloadfunktion:
1private static String Name = project_name.getText().toString();
2private static String URL = url.getText().toString();
3
4//Download XML file from URL
5DownloadManager.Request request = new DownloadManager.Request(Uri.parse(URL));
6request.setTitle("Download von "+Name+".xml");
7request.setDestinationInExternalPublicDir("/", Name+".xml");
8// get download service and enqueue file
9DownloadManager manager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);
10manager.enqueue(request);
11private static ArrayList<Datapoint> itemsList = parseXML();

Meine XML Parser Funktion:
1private ArrayList<Datapoint> parseXML() {
2
3 try {
4
5 Log.w("AndroidParseXMLActivity", "Start");
6 /** Handling XML */
7 SAXParserFactory spf = SAXParserFactory.newInstance();
8 SAXParser sp = spf.newSAXParser();
9 XMLReader xr = sp.getXMLReader();
10 File file = new File(Environment.getExternalStorageDirectory()+ FileSeperator + Name + FileExtension);
11
12 XMLContentHandler myXMLHandler = new XMLContentHandler();
13 xr.setContentHandler(myXMLHandler);
14
15 xr.parse(new InputSource(new InputStreamReader(new FileInputStream(file))));
16
17 itemsList = myXMLHandler.getItemsList();
18
19 Log.w("AndroidParseXMLActivity", "Done");
20 }
21 catch (Exception e) {
22 Log.w("AndroidParseXMLActivity",e );
23 }
24 return itemsList ;
25 }

und LogCat Ausgabe:

109-28 09:30:36.500: W/AndroidParseXMLActivity(7881): Start
209-28 09:30:36.540: W/AndroidParseXMLActivity(7881): java.io.FileNotFoundException: /mnt/sdcard/mich.xml: open failed: ENOENT (No such file or directory)
309-28 09:30:36.540: W/AndroidParseXMLActivity(7881): at libcore.io.IoBridge.open(IoBridge.java:406)
409-28 09:30:36.540: W/AndroidParseXMLActivity(7881): at java.io.FileInputStream.<init>(FileInputStream.java:78)
509-28 09:30:36.540: W/AndroidParseXMLActivity(7881): at de.bertrandt.bertrandtknx.CreateProject.parseXML(CreateProject.java:348)
609-28 09:30:36.540: W/AndroidParseXMLActivity(7881): at de.bertrandt.bertrandtknx.CreateProject.save_project(CreateProject.java:298)
709-28 09:30:36.540: W/AndroidParseXMLActivity(7881): at de.bertrandt.bertrandtknx.CreateProject.onOptionsItemSelected(CreateProject.java:115)
809-28 09:30:36.540: W/AndroidParseXMLActivity(7881): at android.app.Activity.onMenuItemSelected(Activity.java:2564)
909-28 09:30:36.540: W/AndroidParseXMLActivity(7881): at com.android.internal.policy.impl.PhoneWindow.onMenuItemSelected(PhoneWindow.java:984)
1009-28 09:30:36.540: W/AndroidParseXMLActivity(7881): at com.android.internal.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:735)
1109-28 09:30:36.540: W/AndroidParseXMLActivity(7881): at com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:149)
1209-28 09:30:36.540: W/AndroidParseXMLActivity(7881): at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:874)
1309-28 09:30:36.540: W/AndroidParseXMLActivity(7881): at com.android.internal.view.menu.ActionMenuView.invokeItem(ActionMenuView.java:613)
1409-28 09:30:36.540: W/AndroidParseXMLActivity(7881): at com.android.internal.view.menu.ActionMenuItemView.onClick(ActionMenuItemView.java:121)
1509-28 09:30:36.540: W/AndroidParseXMLActivity(7881): at android.view.View.performClick(View.java:3644)
1609-28 09:30:36.540: W/AndroidParseXMLActivity(7881): at android.view.View$PerformClick.run(View.java:14313)
1709-28 09:30:36.540: W/AndroidParseXMLActivity(7881): at android.os.Handler.handleCallback(Handler.java:605)
1809-28 09:30:36.540: W/AndroidParseXMLActivity(7881): at android.os.Handler.dispatchMessage(Handler.java:92)
1909-28 09:30:36.540: W/AndroidParseXMLActivity(7881): at android.os.Looper.loop(Looper.java:137)
2009-28 09:30:36.540: W/AndroidParseXMLActivity(7881): at android.app.ActivityThread.main(ActivityThread.java:4517)
2109-28 09:30:36.540: W/AndroidParseXMLActivity(7881): at java.lang.reflect.Method.invokeNative(Native Method)
2209-28 09:30:36.540: W/AndroidParseXMLActivity(7881): at java.lang.reflect.Method.invoke(Method.java:511)
2309-28 09:30:36.540: W/AndroidParseXMLActivity(7881): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:993)
2409-28 09:30:36.540: W/AndroidParseXMLActivity(7881): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:760)
2509-28 09:30:36.540: W/AndroidParseXMLActivity(7881): at dalvik.system.NativeStart.main(Native Method)
2609-28 09:30:36.540: W/AndroidParseXMLActivity(7881): Caused by: libcore.io.ErrnoException: open failed: ENOENT (No such file or directory)
2709-28 09:30:36.540: W/AndroidParseXMLActivity(7881): at libcore.io.Posix.open(Native Method)
2809-28 09:30:36.540: W/AndroidParseXMLActivity(7881): at libcore.io.BlockGuardOs.open(BlockGuardOs.java:110)
2909-28 09:30:36.540: W/AndroidParseXMLActivity(7881): at libcore.io.IoBridge.open(IoBridge.java:390)
3009-28 09:30:36.540: W/AndroidParseXMLActivity(7881): ... 22 more
3109-28 09:30:36.590: E/SKIA(7881): FimgApiStretch:stretch failed
3209-28 09:30:39.350: D/AbsListView(7881): Get MotionRecognitionManager
3309-28 09:30:39.435: D/dalvikvm(7881): GC_CONCURRENT freed 238K, 5% free 15465K/16135K, paused 1ms+4ms
3409-28 09:30:39.440: D/AbsListView(7881): [unregisterDoubleTapMotionListener]
3509-28 09:30:39.440: I/MotionRecognitionManager(7881): .unregisterListener : / listener count = 0->0, listener=android.widget.AbsListView$4@41a3a5e0
3609-28 09:30:40.675: D/FILESTREAM(7881): Filepath:/data/data/de.bertrandt.bertrandtknx/files/mich
3709-28 09:30:40.675: D/AndroidRuntime(7881): Shutting down VM
3809-28 09:30:40.675: W/dalvikvm(7881): threadid=1: thread exiting with uncaught exception (group=0x40c621f8)
3909-28 09:30:40.680: E/AndroidRuntime(7881): FATAL EXCEPTION: main
4009-28 09:30:40.680: E/AndroidRuntime(7881): java.lang.RuntimeException: Unable to start activity ComponentInfo{de.bertrandt.bertrandtknx/de.bertrandt.bertrandtknx.ProjectView}: java.lang.NullPointerException
4109-28 09:30:40.680: E/AndroidRuntime(7881): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1970)
4209-28 09:30:40.680: E/AndroidRuntime(7881): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1995)
4309-28 09:30:40.680: E/AndroidRuntime(7881): at android.app.ActivityThread.access$600(ActivityThread.java:128)
4409-28 09:30:40.680: E/AndroidRuntime(7881): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1161)
4509-28 09:30:40.680: E/AndroidRuntime(7881): at android.os.Handler.dispatchMessage(Handler.java:99)
4609-28 09:30:40.680: E/AndroidRuntime(7881): at android.os.Looper.loop(Looper.java:137)
4709-28 09:30:40.680: E/AndroidRuntime(7881): at android.app.ActivityThread.main(ActivityThread.java:4517)
4809-28 09:30:40.680: E/AndroidRuntime(7881): at java.lang.reflect.Method.invokeNative(Native Method)
4909-28 09:30:40.680: E/AndroidRuntime(7881): at java.lang.reflect.Method.invoke(Method.java:511)
5009-28 09:30:40.680: E/AndroidRuntime(7881): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:993)
5109-28 09:30:40.680: E/AndroidRuntime(7881): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:760)
5209-28 09:30:40.680: E/AndroidRuntime(7881): at dalvik.system.NativeStart.main(Native Method)
5309-28 09:30:40.680: E/AndroidRuntime(7881): Caused by: java.lang.NullPointerException
5409-28 09:30:40.680: E/AndroidRuntime(7881): at de.bertrandt.bertrandtknx.ProjectView.setup(ProjectView.java:148)
5509-28 09:30:40.680: E/AndroidRuntime(7881): at de.bertrandt.bertrandtknx.ProjectView.onCreate(ProjectView.java:62)
5609-28 09:30:40.680: E/AndroidRuntime(7881): at android.app.Activity.performCreate(Activity.java:4533)
5709-28 09:30:40.680: E/AndroidRuntime(7881): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1053)
5809-28 09:30:40.680: E/AndroidRuntime(7881): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1934)
5909-28 09:30:40.680: E/AndroidRuntime(7881): ... 11 more

Ich habe folgende Permissions gesetzt:

1<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" >
2</uses-permission>
3<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" >
4</uses-permission>

Hat jemand eine Idee woran es liegen kann?

— geändert am 28.09.2012, 15:59:10

Antworten
Michael H.
  • Forum-Beiträge: 17

28.09.2012, 11:42:30 via Website

Das Einfügen einer kurzen Wartezeit zwischen Download der Datei und dem Start des Parsens hat das Problem gelöst:

1try {
2 Thread.sleep(1000);
3 } catch (InterruptedException e) {
4 // TODO Auto-generated catch block
5 e.printStackTrace();
6 }

— geändert am 28.09.2012, 16:09:31

Antworten