我试图读取SDCARD上的CSS文件内容。
我从动作中选择文件:
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("text/css");
startActivityForResult(intent, 1);
我在这里抓住路径:
public void onActivityResult(int requestCode, int resultCode, Intent data) {
SharedPreferences sharedPref = PreferenceManager
.getDefaultSharedPreferences(getActivity().getApplicationContext());
SharedPreferences.Editor editor = sharedPref.edit();
if (requestCode == 1) {
if(resultCode == Activity.RESULT_OK){
Log.d("FilePicker", data.getData().toString());
editor.putString("custom_style_file", data.getData().getPath());
editor.commit();
}
if (resultCode == Activity.RESULT_CANCELED) {
//Write your code if there's no result
}
}
}
我得到以下路径/document/primary:CustomCSS/myCustom.css
然后我尝试用这个函数读取文件的内容:
public static String readFromSDcard(String path) {
File sdcard = Environment.getExternalStorageDirectory();
//Get the text file
File file = new File(sdcard, path);
//Read text from file
StringBuilder text = new StringBuilder();
try {
BufferedReader br = new BufferedReader(new FileReader(file));
String line;
while ((line = br.readLine()) != null) {
text.append(line);
}
br.close();
}
catch (IOException e) {
//You'll need to add proper error handling here
}
Log.d("Read from file", text.toString());
return text.toString();
}
该功能什么都不返回,我不知道我在这里做错了什么。
答案 0 :(得分:1)
//You'll need to add proper error handling here
如果你这样做,你就会明白为什么你的函数什么也不返回。
例如:
text.append("IOException: " + e.getMessage() + "\n");
你的路径:
/document/primary:CustomCSS/myCustom.css
这不是文件系统路径,而是内容提供者路径。
因此,获取内容解析器,然后让它打开该文件的输入流。之后,您可以使用通常的代码来阅读内容。
Google for getContentResolver()。openInputStream()。
答案 1 :(得分:0)
确保您在清单文件中具有读取存储权限
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />