尝试使用Android Studio从内部存储的下载文件夹中读取.csv文件



我正在尝试读取手机内部存储的下载文件夹中的.csv文件的内容。我的代码看起来像这样。

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
browse = (Button) findViewById(R.id.browse);
editTextPath = (EditText) findViewById(R.id.path);
browse.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("*/*");
intent.addCategory(Intent.CATEGORY_OPENABLE);
startActivityForResult(Intent.createChooser(intent,"Select file or dir"), 1);
setResult(Activity.RESULT_OK);
Log.e("Content","In onclick");
}
});}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
Log.e("Content","In onactivity");
if (requestCode == 1 && resultCode == Activity.RESULT_OK) {
String path = data.getData().getPath();
Log.e("Pathb",path);
proImportCSV(new File(data.getData().getPath()));
}
}
private void proImportCSV(File file) {
try{
ContentValues cv = new ContentValues();
FileReader fr = new FileReader(file);
CSVReader dataRead = new CSVReader(fr);
String[] vv = null;
while((vv = dataRead.readNext())!=null) {
cv.clear();
}
dataRead.close();
}
catch (Exception e) { Log.e("TAG",e.toString());
}
}

我得到的错误是:

java.io.FileNotFoundException:/document/priminary:Download/1232469_About_0_22092018045225.csv:打开失败:ENOENT(没有这样的文件或目录(

我还分享了我的错误截图:

在此处输入图像描述

更新

我对以前共享的代码做了一个小改动:

private void proImportCSV(File file, Uri uri) {
try{
ContentValues cv = new ContentValues();
InputStream inputStream = getContentResolver().openInputStream(uri);
InputStreamReader isr = new InputStreamReader(inputStream);
CSVReader dataRead = new CSVReader(isr);
String[] vv = null;
while((vv = dataRead.readNext())!=null) {
cv.clear();
}
dataRead.close();
}
catch (Exception e) { Log.e("TAG",e.toString());
}
}

这里是uri = data.getData()。在这个变化之后,我得到了以下错误

java.io.FileNotFoundException:/storage/emulated/0/Download/1232469_About_0_22092018045225.csv:打开失败:EACCES(权限被拒绝(

此外,我已经将这几行代码添加到我的manifest.xml 中

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

您并不总是可以从内容URI创建工作文件。但您可能不需要它。new CSVReader(fr);接受Reader作为参数。您可以使用以下方法使用从InputStream创建的InputStreamReader,从Uri创建:

InputStream  inputStream = getContentResolver().openInputStream(uri);

其中uridata.getData()

相关内容

  • 没有找到相关文章

最新更新