Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android-创建文件在Android 5上有效,但在Android 6或更高版本中无效_Java_Android_File - Fatal编程技术网

Java Android-创建文件在Android 5上有效,但在Android 6或更高版本中无效

Java Android-创建文件在Android 5上有效,但在Android 6或更高版本中无效,java,android,file,Java,Android,File,我有一个简单的方法,在Android的下载文件夹中创建一个文件夹。它在安卓5中工作得很好,但在安卓6或更高版本(我用安卓6和8测试)中,文件夹没有创建 有什么变化吗 这是我的方法,正如我所说,这是一个简单的创建文件夹功能。但它不适用于Android 6或更高版本,只适用于Android 5 public void exportaTabelas(SQLiteDatabase db, String tableName) { try { // Query the

我有一个简单的方法,在Android的下载文件夹中创建一个文件夹。它在安卓5中工作得很好,但在安卓6或更高版本(我用安卓6和8测试)中,文件夹没有创建

有什么变化吗

这是我的方法,正如我所说,这是一个简单的创建文件夹功能。但它不适用于Android 6或更高版本,只适用于Android 5

public void exportaTabelas(SQLiteDatabase db, String tableName) {
        try {
            // Query the data in the table
            Cursor cursor = db.rawQuery("SELECT * FROM " + tableName, null);

            //File exportDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);

            exportDir = new File (Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) + "/ENEL/");
            if (!exportDir.exists())
            {
                exportDir.mkdirs();
            }

            File file = new File(exportDir, tableName +".csv");
            file.createNewFile();

            //CSVWriter csvWriter = new CSVWriter(new FileWriter(file));
            CSVWriter csvWriter = new CSVWriter(new FileWriter(file.getAbsoluteFile(), true));

            // Write the table data to the file
            csvWriter.writeNext(cursor.getColumnNames());
            while(cursor.moveToNext()) {
                String arrStr[] = { cursor.getString(0), cursor.getString(1) };
                csvWriter.writeNext(arrStr);
            }

            // close cursor and writer
            cursor.close();
            csvWriter.close();

        } catch (Exception e) {
            // handle exception
            Log.e("MainActivity", e.getMessage(), e);
        }

        Toast.makeText(this, "ARQUIVO CSV GERADO!", Toast.LENGTH_SHORT).show();
    }

我假设您在
权限方面有问题

Android 5.1.1及以下版本使用安装时权限,因此
清单
文件中的
就足够了。检查

但对于超过5.1.1的Android,您需要在清单中显示
,并在运行时向用户请求权限。检查

Android开发者文档网站是你最好的选择


PS:您应该在问题中包含您收到的任何错误消息,例如在
try catch
块中捕获并记录到Android Studio IDE中的Logcat的任何错误。

对于Android 6及以上版本,
exportDir.exists()
返回的是什么?可能与@MartinZeitler重复的不是。我已经在XML上添加了此权限。@TejasPandya返回true。有吗?就是这样!谢谢实际上,在Android 6或更高版本中,需要使用requestPermissions方法向用户请求在设备中写入文件的权限。谢谢你,伙计!