如何从内部存储读取csv文件

时间:2019-12-20 18:08:01

标签: android csv

这是我的代码。我在“ 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(); 

2 个答案:

答案 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文件内容。