簡體   English   中英

打開失敗:嘗試創建 csv 文件時出現 EACCES(權限被拒絕)

[英]open failed: EACCES (Permission denied) while trying to create csv file

我已經閱讀了所有類似的問題,但沒有一個對我有幫助。 所以我正在為自己構建一個應用程序,它會隨着時間的推移收集一些數據。 我選擇使用一個簡單的 csv 文件來保存它(我仍然不確定是否有更好的方法來做到這一點)。 我正在使用 opencsv 庫來完成這項工作,但我不斷收到此錯誤:

java.io.FileNotFoundException: /storage/emulated/0/TestCSV.csv: open failed: EACCES (Permission denied).

它適用於api 22

private void verifyStoragePermissions(){

        String[] perms = {Manifest.permission.WRITE_EXTERNAL_STORAGE,
                        Manifest.permission.READ_EXTERNAL_STORAGE};

        if(ContextCompat.checkSelfPermission(this.getApplicationContext(), perms[0]) == PackageManager.PERMISSION_GRANTED
        && ContextCompat.checkSelfPermission(this.getApplicationContext(), perms[1]) == PackageManager.PERMISSION_GRANTED){
            writeToCsv();
        }
        else{
            ActivityCompat.requestPermissions(MainActivity.this, perms, 1);
        }
    }

    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        verifyStoragePermissions();
    }

...

private void writeToCsv(){

        CSVWriter writer = null;

        String csv =  (Environment.getExternalStorageDirectory().getAbsolutePath()+ "/TestCSV.csv");

        try{
            writer = new CSVWriter(new FileWriter(csv));

            List<String[]> data = new ArrayList<String[]>();
            data.add(new String[]{"Country", "Capital"});
            data.add(new String[]{"India", "New Delhi"});
            data.add(new String[]{"United States", "Washington D.C"});
            data.add(new String[]{"Germany", "Berlin"});

            writer.writeAll(data); // data is adding to csv

            writer.close();
        }
        catch (IOException e){
            e.printStackTrace();
        }
    }

我在onCreate方法中調用verifyStoragePermissions()

讀/寫外部不會為所有目錄提供全面的權限。 值得注意的是,它沒有授予 root 權限。 每個應用程序在外部存儲上都有自己的個人目錄,請將其寫在那里。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM