这是我的代码。我在“ res”文件夹中创建一个名为“ raw”的文件夹,并将CSV文件放入其中。我的程序从读取csv 文件夹“原始”,它的工作原理。现在我想做同样的事情,但阅读 内部存储中的csv文件。我找不到有效的代码。 有任何想法吗?
我已经尝试过这些:
Environment.getExternalStorageDirectory()
Environment.getDataDirectory()
Environment.getRootDirectory()
这些访问内部存储器,但是如果您看不到这些文件夹 在您的设备上导航,它是只能从应用访问的文件路径。 我需要能够从设备访问任何文件夹以读取CSV 文件。而且我不想使用SDC卡读取该外部存储器。
谢谢!
dato2 = codigo.getText().toString();
String linea;
boolean encontrado=false;
InputStream archivo=this.getResources().openRawResource(R.raw.data);
BufferedReader reader=new BufferedReader(new InputStreamReader(archivo));
if(archivo!=null)
{
while(( linea=reader.readLine())!=null)
{
String pro=linea.split(";")[0];
String pre=linea.split(";")[1];
String cod=linea.split(";")[2];
if(dato2.equals(cod))
{
Producto proproducto = new Producto(pro, pre, cod);
listaProductos.add(proproducto);
encontrado=true;
}
}
if(encontrado==false)
{
Toast.makeText(getApplicationContext(),"No se encontro",Toast.LENGTH_SHORT).show();
}
}
archivo.close();
答案 0 :(得分:0)
您可以使用
BufferReader
与
Environment.getExternalStorageDirectory
如下所示。它返回字符串列表,但是您可以更改它以满足您的需求。 Asset文件夹适合存储此类文件。
private List<String> getStringFromExtraFile(String fileName){
List<String> resultList = new ArrayList<>();
File sdCardFile = Environment.getExternalStorageDirectory();
File file = new File(sdCardFile, fileName);
try{
if(file.exists())
BufferedReader bufferedReader = new BufferedReader(new FileReader(file));
String returned;
while((returned = bufferedReader.readLine()) != null){
resultList.add(returned);
}
bufferedReader.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return resultList;
}
答案 1 :(得分:0)
要从原始目录读取文件,需要以这种方式进行操作。
InputStream ins = getResources().openRawResource(
getResources().getIdentifier("FILENAME_WITHOUT_EXTENSION",
"raw", getPackageName()));
并使用此implementation com.opencsv:opencsv:4.6'
来读取csv文件内容。