在android中将Sqlite数据转换为CSV文件
这是我的代码,当我运行它时,它不会在我的sd卡中存储或生成任何文件。我不知道我在哪里犯了错误对不起,我在编程方面不行在android中将Sqlite数据转换为CSV文件,android,sqlite,export,export-to-csv,Android,Sqlite,Export,Export To Csv,这是我的代码,当我运行它时,它不会在我的sd卡中存储或生成任何文件。我不知道我在哪里犯了错误对不起,我在编程方面不行 List<ClientModel> list = new ArrayList<ClientModel>(); //My Model DatabaseHelper db = new DatabaseHelper(getApplicationContext()); //My DBHelper Class list = db.g
List<ClientModel> list = new ArrayList<ClientModel>(); //My Model
DatabaseHelper db = new DatabaseHelper(getApplicationContext()); //My DBHelper Class
list = db.getAllClientList(); //My Method to get all data from database
File exportDir = new File(Environment.getExternalStorageDirectory(), ""); //
if (!exportDir.exists())
{
exportDir.mkdirs();
}
File file = new File(exportDir, "Abc.csv"); //File Name
//writing data to a txt file
try {
file.createNewFile();
CSVWriter csvWrite = new CSVWriter(new FileWriter(file)); //Writing data in csv file
for (int index = 0; index < list.size();) {
String arrStr[] = { String.valueOf(list.get(0))};
csvWrite.writeNext(arrStr);
}
csvWrite.close();
//But Above Code is not working for me
} catch (IOException e) {
e.printStackTrace();
}
List List=new ArrayList()//我的模型
DatabaseHelper db=新的DatabaseHelper(getApplicationContext())//我的DBHelper类
list=db.getAllClientList()//从数据库获取所有数据的方法
File exportDir=新文件(Environment.getExternalStorageDirectory(),“”)//
如果(!exportDir.exists())
{
exportDir.mkdirs();
}
文件文件=新文件(exportDir,“Abc.csv”)//文件名
//将数据写入txt文件
试一试{
createNewFile();
CSVWriter csvWrite=new CSVWriter(new FileWriter(file));//在csv文件中写入数据
对于(int index=0;index
您需要检查Api 23的运行时权限
:
试试这个:
if(isStoragePermissionGranted()){
Save_file();
}
现在在活动中添加以下方法:
public void Save_file(){
File exportDir = new File(Environment.getExternalStorageDirectory(), ""); //
if (!exportDir.exists())
{
exportDir.mkdirs();
}
File file = new File(exportDir, "Abc.csv"); //File Name
//writing data to a txt file
try {
file.createNewFile();
CSVWriter csvWrite = new CSVWriter(new FileWriter(file)); //Writing data in csv file
for (int index = 0; index < list.size();) {
String arrStr[] = { String.valueOf(list.get(0))};
csvWrite.writeNext(arrStr);
}
csvWrite.close();
//But Above Code is not working for me
} catch (IOException e) {
e.printStackTrace();
}
}
}
public boolean isStoragePermissionGranted() {
if (Build.VERSION.SDK_INT >= 23) {
if (checkSelfPermission(android.Manifest.permission.WRITE_EXTERNAL_STORAGE)
== PackageManager.PERMISSION_GRANTED) {
Log.v(TAG,"Permission is granted");
return true;
} else {
Log.v(TAG,"Permission is revoked");
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);
return false;
}
}
else { //permission is automatically granted on sdk<23 upon installation
Log.v(TAG,"Permission is granted");
return true;
}
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if(grantResults[0]== PackageManager.PERMISSION_GRANTED){
Log.v(TAG,"Permission: "+permissions[0]+ "was "+grantResults[0]);
//resume tasks needing this permission
Save_file();
}
}
public void Save_file(){
File exportDir=新文件(Environment.getExternalStorageDirectory(),“”)//
如果(!exportDir.exists())
{
exportDir.mkdirs();
}
File File=新文件(exportDir,“Abc.csv”);//文件名
//将数据写入txt文件
试一试{
createNewFile();
CSVWriter csvWrite=new CSVWriter(new FileWriter(file));//在csv文件中写入数据
对于(int index=0;index=23){
if(checkSelfPermission(android.Manifest.permission.WRITE\u外部存储)
==PackageManager.权限(已授予){
Log.v(标记“已授予许可”);
返回true;
}否则{
Log.v(标记“权限被撤销”);
ActivityCompat.requestPermissions(这个新字符串[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},1);
返回false;
}
}
else{//在SDK上自动授予权限您在清单中授予写权限了吗?是的,我已经添加了您在catch
block中收到的错误?打开失败:EACCES(权限被拒绝)在调试中显示我。但是我已经添加了权限尝试你的代码工作Thx人。我没有检查api 23的权限time@Cool如果答案有帮助,请单击勾号将其标记为正确