2016-07-07 31 views
0

在我的应用程序,用户可以通过一个Intent选择一个XML文件:的Android从XML创建,文件路径字符串

选择:

Intent chooseFileXML = new Intent(Intent.ACTION_GET_CONTENT); 
chooseFileXML.setType("text/xml"); 
Intent intentXML = Intent.createChooser(chooseFileXML, getString(R.string.importXMLDatei)); 
startActivityForResult(intentXML, REQUEST_CODE_IMPORT_XML_FILE); 

接收:

@Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data){ 
     switch (requestCode){ 
      case REQUEST_CODE_IMPORT_XML_FILE: 
       if(resultCode == RESULT_OK){ 
        Uri uri = data.getData(); 
        String filePath = uri.getPath(); 
        File fl = new File(filePath); 
        //Get xml-code from file and put it in a String 
        FileInputStream fin = null; 
        try { 
        fin = new FileInputStream(fl); 
        BufferedReader reader = new BufferedReader(new InputStreamReader(fin)); 
        StringBuilder sb = new StringBuilder(); 
        String line; 
        while ((line = reader.readLine()) != null) { 
         sb.append(line).append("\n"); 
        } 
        reader.close(); 
        System.out.println(sb.toString()); 

        fin.close(); 
       } catch (Exception e) { 
        e.printStackTrace(); 
       } 
      } 
      break; 
     } 
    } 

我收到正确的文件路径。但在这一行:fin = new FileInputStream(fl);我得到这个错误:

java.io.FileNotFoundException:/document/primary:Android/data/com.oli.myapp/Files/test.xml:打开失败:ENOENT(没有这样的文件或目录)

回答

0

文件路径其实问题。你的文件路径不vaild于是找到文件的真实路径

String filePath = getRealPathFromURI(uri); 

getRealPathFromURI方法

private String getRealPathFromURI(Uri contentUri) { 
String[] proj = { MediaStore.Images.Media.DATA }; 
CursorLoader loader = new CursorLoader(mContext, contentUri, proj, null, null, null); 
Cursor cursor = loader.loadInBackground(); 
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); 
cursor.moveToFirst(); 
String result = cursor.getString(column_index); 
cursor.close(); 
return result; 
} 
+0

产生的原因:java.lang.NullPointer异常:尝试在空对象引用 – XxGoliathusxX

+0

上调用虚拟方法'char [] java.lang.String.toCharArray()',在该代码中使用char? – sasikumar

+0

无处:它显示此行中的错误:File fl = new File(realPath); – XxGoliathusxX