如何在android中的sd卡上书写

如何在android中的sd卡上书写,android,sd-card,Android,Sd Card,我试图备份我的sd卡上的短信和它的工作,但有一个问题,当我采取备份它删除以前存储的文件。但我想保留SD卡上的所有文件。我正在使用这个代码 backup=(Button)findViewById(R.id.backup); backup.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { bac

我试图备份我的sd卡上的短信和它的工作,但有一个问题,当我采取备份它删除以前存储的文件。但我想保留SD卡上的所有文件。我正在使用这个代码

    backup=(Button)findViewById(R.id.backup);
    backup.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View arg0) {

            backupSMS();
        }
             public ArrayList<String> smsBuffer = new ArrayList<String>();
                String smsFile = "SMS"+".csv";



        private void backupSMS() {
            smsBuffer.clear();
            Uri mSmsinboxQueryUri = Uri.parse("content://sms/inbox");
            Cursor cursor1 = getContentResolver().query(
                    mSmsinboxQueryUri,
                    new String[] { "_id", "thread_id", "address", "person", "date",
                            "body", "type" }, null, null, null);
            //startManagingCursor(cursor1);
            String[] columns = new String[] { "_id", "thread_id", "address", "person", "date", "body",
                    "type" };
            if (cursor1.getCount() > 0) {
                String count = Integer.toString(cursor1.getCount());
                Log.d("Count",count);
                while (cursor1.moveToNext()) {

                     String messageId = cursor1.getString(cursor1
                            .getColumnIndex(columns[0]));

                     String threadId = cursor1.getString(cursor1
                            .getColumnIndex(columns[1]));

                    String address = cursor1.getString(cursor1
                            .getColumnIndex(columns[2]));
                    String name = cursor1.getString(cursor1
                            .getColumnIndex(columns[3]));
                    String date = cursor1.getString(cursor1
                            .getColumnIndex(columns[4]));
                    String msg = cursor1.getString(cursor1
                            .getColumnIndex(columns[5]));
                    String type = cursor1.getString(cursor1
                            .getColumnIndex(columns[6]));



                    smsBuffer.add(messageId + ","+ threadId+ ","+ address + "," + name + "," + date + " ," + msg + " ,"
                            + type);

                }           
                generateCSVFileForSMS(smsBuffer);
            }               
        }


         private void generateCSVFileForSMS(ArrayList<String> list)
        {

            try 
            {
                String storage_path = Environment.getExternalStorageDirectory().toString() + File.separator + smsFile;
                FileWriter write = new FileWriter(storage_path);

                write.append("messageId, threadId, Address, Name, Date, msg, type");
                write.append('\n');
                write.append('\n');


                for (String s : list)
                {
                    write.append(s);
                    write.append('\n');
                }
                write.flush();
                write.close();
            }

            catch (NullPointerException e) 
            {
                System.out.println("Nullpointer Exception "+e);
                 //  e.printStackTrace();
             }
            catch (IOException e) 
            {
                e.printStackTrace();
            }
            catch (Exception e) 
            {
                e.printStackTrace();
           }

        }
    });  
backup=(按钮)findviewbyd(R.id.backup);
backup.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图arg0){
备份();
}
public ArrayList smsBuffer=new ArrayList();
字符串smsFile=“SMS”+“.csv”;
私有无效备份(){
smsBuffer.clear();
Uri MSMSSinboxQueryURI=Uri.parse(“content://sms/inbox");
游标cursor1=getContentResolver().query(
MSMSSinboxQueryuri,
新字符串[]{“\u id”,“thread\u id”,“address”,“person”,“date”,
“body”,“type”},null,null,null);
//开始管理游标(游标1);
String[]columns=新字符串[]{“\u id”、“线程id”、“地址”、“人员”、“日期”、“正文”,
“类型”};
if(cursor1.getCount()>0){
字符串计数=整数.toString(cursor1.getCount());
Log.d(“计数”,计数);
while(cursor1.moveToNext()){
String messageId=cursor1.getString(cursor1
.getColumnIndex(列[0]);
String threadId=cursor1.getString(cursor1
.getColumnIndex(列[1]);
字符串地址=cursor1.getString(cursor1
.getColumnIndex(列[2]);
String name=cursor1.getString(cursor1
.getColumnIndex(列[3]);
String date=cursor1.getString(cursor1
.getColumnIndex(列[4]);
String msg=cursor1.getString(cursor1
.getColumnIndex(列[5]);
字符串类型=cursor1.getString(cursor1
.getColumnIndex(列[6]);
添加(messageId+,“+threadId+”,“+address+”,“+name+”,“+date+”,“+msg+”,”
+类型);
}           
生成CSVFILEFORMS(smsBuffer);
}               
}
专用void generateCSvFileForMs(ArrayList列表)
{
尝试
{
String storage_path=Environment.getExternalStorageDirectory().toString()+File.separator+smsFile;
FileWriter write=新的FileWriter(存储路径);
附加(“messageId,threadId,地址,名称,日期,消息,类型”);
write.append('\n');
write.append('\n');
用于(字符串s:列表)
{
写入、追加;
write.append('\n');
}
write.flush();
write.close();
}
捕获(NullPointerException e)
{
System.out.println(“空指针异常”+e);
//e.printStackTrace();
}
捕获(IOE异常)
{
e、 printStackTrace();
}
捕获(例外e)
{
e、 printStackTrace();
}
}
});  

请帮助我熟悉android。提前感谢

如果我理解您的要求,请更正您的SMS.csv文件被过度写入,并且您希望继续添加其他文件,而不是过度写入此文件

    backup=(Button)findViewById(R.id.backup);
    backup.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View arg0) {

            backupSMS();
        }
             public ArrayList<String> smsBuffer = new ArrayList<String>();
                String smsFile = "SMS"+".csv";



        private void backupSMS() {
            smsBuffer.clear();
            Uri mSmsinboxQueryUri = Uri.parse("content://sms/inbox");
            Cursor cursor1 = getContentResolver().query(
                    mSmsinboxQueryUri,
                    new String[] { "_id", "thread_id", "address", "person", "date",
                            "body", "type" }, null, null, null);
            //startManagingCursor(cursor1);
            String[] columns = new String[] { "_id", "thread_id", "address", "person", "date", "body",
                    "type" };
            if (cursor1.getCount() > 0) {
                String count = Integer.toString(cursor1.getCount());
                Log.d("Count",count);
                while (cursor1.moveToNext()) {

                     String messageId = cursor1.getString(cursor1
                            .getColumnIndex(columns[0]));

                     String threadId = cursor1.getString(cursor1
                            .getColumnIndex(columns[1]));

                    String address = cursor1.getString(cursor1
                            .getColumnIndex(columns[2]));
                    String name = cursor1.getString(cursor1
                            .getColumnIndex(columns[3]));
                    String date = cursor1.getString(cursor1
                            .getColumnIndex(columns[4]));
                    String msg = cursor1.getString(cursor1
                            .getColumnIndex(columns[5]));
                    String type = cursor1.getString(cursor1
                            .getColumnIndex(columns[6]));



                    smsBuffer.add(messageId + ","+ threadId+ ","+ address + "," + name + "," + date + " ," + msg + " ,"
                            + type);

                }           
                generateCSVFileForSMS(smsBuffer);
            }               
        }


         private void generateCSVFileForSMS(ArrayList<String> list)
        {

            try 
            {
                String storage_path = Environment.getExternalStorageDirectory().toString() + File.separator + smsFile;
                FileWriter write = new FileWriter(storage_path);

                write.append("messageId, threadId, Address, Name, Date, msg, type");
                write.append('\n');
                write.append('\n');


                for (String s : list)
                {
                    write.append(s);
                    write.append('\n');
                }
                write.flush();
                write.close();
            }

            catch (NullPointerException e) 
            {
                System.out.println("Nullpointer Exception "+e);
                 //  e.printStackTrace();
             }
            catch (IOException e) 
            {
                e.printStackTrace();
            }
            catch (Exception e) 
            {
                e.printStackTrace();
           }

        }
    });  
线路

    backup=(Button)findViewById(R.id.backup);
    backup.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View arg0) {

            backupSMS();
        }
             public ArrayList<String> smsBuffer = new ArrayList<String>();
                String smsFile = "SMS"+".csv";



        private void backupSMS() {
            smsBuffer.clear();
            Uri mSmsinboxQueryUri = Uri.parse("content://sms/inbox");
            Cursor cursor1 = getContentResolver().query(
                    mSmsinboxQueryUri,
                    new String[] { "_id", "thread_id", "address", "person", "date",
                            "body", "type" }, null, null, null);
            //startManagingCursor(cursor1);
            String[] columns = new String[] { "_id", "thread_id", "address", "person", "date", "body",
                    "type" };
            if (cursor1.getCount() > 0) {
                String count = Integer.toString(cursor1.getCount());
                Log.d("Count",count);
                while (cursor1.moveToNext()) {

                     String messageId = cursor1.getString(cursor1
                            .getColumnIndex(columns[0]));

                     String threadId = cursor1.getString(cursor1
                            .getColumnIndex(columns[1]));

                    String address = cursor1.getString(cursor1
                            .getColumnIndex(columns[2]));
                    String name = cursor1.getString(cursor1
                            .getColumnIndex(columns[3]));
                    String date = cursor1.getString(cursor1
                            .getColumnIndex(columns[4]));
                    String msg = cursor1.getString(cursor1
                            .getColumnIndex(columns[5]));
                    String type = cursor1.getString(cursor1
                            .getColumnIndex(columns[6]));



                    smsBuffer.add(messageId + ","+ threadId+ ","+ address + "," + name + "," + date + " ," + msg + " ,"
                            + type);

                }           
                generateCSVFileForSMS(smsBuffer);
            }               
        }


         private void generateCSVFileForSMS(ArrayList<String> list)
        {

            try 
            {
                String storage_path = Environment.getExternalStorageDirectory().toString() + File.separator + smsFile;
                FileWriter write = new FileWriter(storage_path);

                write.append("messageId, threadId, Address, Name, Date, msg, type");
                write.append('\n');
                write.append('\n');


                for (String s : list)
                {
                    write.append(s);
                    write.append('\n');
                }
                write.flush();
                write.close();
            }

            catch (NullPointerException e) 
            {
                System.out.println("Nullpointer Exception "+e);
                 //  e.printStackTrace();
             }
            catch (IOException e) 
            {
                e.printStackTrace();
            }
            catch (Exception e) 
            {
                e.printStackTrace();
           }

        }
    });  
String smsFile=“SMS”+“.csv”

    backup=(Button)findViewById(R.id.backup);
    backup.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View arg0) {

            backupSMS();
        }
             public ArrayList<String> smsBuffer = new ArrayList<String>();
                String smsFile = "SMS"+".csv";



        private void backupSMS() {
            smsBuffer.clear();
            Uri mSmsinboxQueryUri = Uri.parse("content://sms/inbox");
            Cursor cursor1 = getContentResolver().query(
                    mSmsinboxQueryUri,
                    new String[] { "_id", "thread_id", "address", "person", "date",
                            "body", "type" }, null, null, null);
            //startManagingCursor(cursor1);
            String[] columns = new String[] { "_id", "thread_id", "address", "person", "date", "body",
                    "type" };
            if (cursor1.getCount() > 0) {
                String count = Integer.toString(cursor1.getCount());
                Log.d("Count",count);
                while (cursor1.moveToNext()) {

                     String messageId = cursor1.getString(cursor1
                            .getColumnIndex(columns[0]));

                     String threadId = cursor1.getString(cursor1
                            .getColumnIndex(columns[1]));

                    String address = cursor1.getString(cursor1
                            .getColumnIndex(columns[2]));
                    String name = cursor1.getString(cursor1
                            .getColumnIndex(columns[3]));
                    String date = cursor1.getString(cursor1
                            .getColumnIndex(columns[4]));
                    String msg = cursor1.getString(cursor1
                            .getColumnIndex(columns[5]));
                    String type = cursor1.getString(cursor1
                            .getColumnIndex(columns[6]));



                    smsBuffer.add(messageId + ","+ threadId+ ","+ address + "," + name + "," + date + " ," + msg + " ,"
                            + type);

                }           
                generateCSVFileForSMS(smsBuffer);
            }               
        }


         private void generateCSVFileForSMS(ArrayList<String> list)
        {

            try 
            {
                String storage_path = Environment.getExternalStorageDirectory().toString() + File.separator + smsFile;
                FileWriter write = new FileWriter(storage_path);

                write.append("messageId, threadId, Address, Name, Date, msg, type");
                write.append('\n');
                write.append('\n');


                for (String s : list)
                {
                    write.append(s);
                    write.append('\n');
                }
                write.flush();
                write.close();
            }

            catch (NullPointerException e) 
            {
                System.out.println("Nullpointer Exception "+e);
                 //  e.printStackTrace();
             }
            catch (IOException e) 
            {
                e.printStackTrace();
            }
            catch (Exception e) 
            {
                e.printStackTrace();
           }

        }
    });  
需要更改为类似的内容

    backup=(Button)findViewById(R.id.backup);
    backup.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View arg0) {

            backupSMS();
        }
             public ArrayList<String> smsBuffer = new ArrayList<String>();
                String smsFile = "SMS"+".csv";



        private void backupSMS() {
            smsBuffer.clear();
            Uri mSmsinboxQueryUri = Uri.parse("content://sms/inbox");
            Cursor cursor1 = getContentResolver().query(
                    mSmsinboxQueryUri,
                    new String[] { "_id", "thread_id", "address", "person", "date",
                            "body", "type" }, null, null, null);
            //startManagingCursor(cursor1);
            String[] columns = new String[] { "_id", "thread_id", "address", "person", "date", "body",
                    "type" };
            if (cursor1.getCount() > 0) {
                String count = Integer.toString(cursor1.getCount());
                Log.d("Count",count);
                while (cursor1.moveToNext()) {

                     String messageId = cursor1.getString(cursor1
                            .getColumnIndex(columns[0]));

                     String threadId = cursor1.getString(cursor1
                            .getColumnIndex(columns[1]));

                    String address = cursor1.getString(cursor1
                            .getColumnIndex(columns[2]));
                    String name = cursor1.getString(cursor1
                            .getColumnIndex(columns[3]));
                    String date = cursor1.getString(cursor1
                            .getColumnIndex(columns[4]));
                    String msg = cursor1.getString(cursor1
                            .getColumnIndex(columns[5]));
                    String type = cursor1.getString(cursor1
                            .getColumnIndex(columns[6]));



                    smsBuffer.add(messageId + ","+ threadId+ ","+ address + "," + name + "," + date + " ," + msg + " ,"
                            + type);

                }           
                generateCSVFileForSMS(smsBuffer);
            }               
        }


         private void generateCSVFileForSMS(ArrayList<String> list)
        {

            try 
            {
                String storage_path = Environment.getExternalStorageDirectory().toString() + File.separator + smsFile;
                FileWriter write = new FileWriter(storage_path);

                write.append("messageId, threadId, Address, Name, Date, msg, type");
                write.append('\n');
                write.append('\n');


                for (String s : list)
                {
                    write.append(s);
                    write.append('\n');
                }
                write.flush();
                write.close();
            }

            catch (NullPointerException e) 
            {
                System.out.println("Nullpointer Exception "+e);
                 //  e.printStackTrace();
             }
            catch (IOException e) 
            {
                e.printStackTrace();
            }
            catch (Exception e) 
            {
                e.printStackTrace();
           }

        }
    });  
String smsFile = "SMS-" + SystemClock.currentThreadTimeMillis() + ".csv";

每次都应该创建一个新的备份文件。

如果我理解您的要求,请更正您的SMS.csv文件被过度写入,并且您希望继续添加其他文件,而不是过度写入此文件

    backup=(Button)findViewById(R.id.backup);
    backup.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View arg0) {

            backupSMS();
        }
             public ArrayList<String> smsBuffer = new ArrayList<String>();
                String smsFile = "SMS"+".csv";



        private void backupSMS() {
            smsBuffer.clear();
            Uri mSmsinboxQueryUri = Uri.parse("content://sms/inbox");
            Cursor cursor1 = getContentResolver().query(
                    mSmsinboxQueryUri,
                    new String[] { "_id", "thread_id", "address", "person", "date",
                            "body", "type" }, null, null, null);
            //startManagingCursor(cursor1);
            String[] columns = new String[] { "_id", "thread_id", "address", "person", "date", "body",
                    "type" };
            if (cursor1.getCount() > 0) {
                String count = Integer.toString(cursor1.getCount());
                Log.d("Count",count);
                while (cursor1.moveToNext()) {

                     String messageId = cursor1.getString(cursor1
                            .getColumnIndex(columns[0]));

                     String threadId = cursor1.getString(cursor1
                            .getColumnIndex(columns[1]));

                    String address = cursor1.getString(cursor1
                            .getColumnIndex(columns[2]));
                    String name = cursor1.getString(cursor1
                            .getColumnIndex(columns[3]));
                    String date = cursor1.getString(cursor1
                            .getColumnIndex(columns[4]));
                    String msg = cursor1.getString(cursor1
                            .getColumnIndex(columns[5]));
                    String type = cursor1.getString(cursor1
                            .getColumnIndex(columns[6]));



                    smsBuffer.add(messageId + ","+ threadId+ ","+ address + "," + name + "," + date + " ," + msg + " ,"
                            + type);

                }           
                generateCSVFileForSMS(smsBuffer);
            }               
        }


         private void generateCSVFileForSMS(ArrayList<String> list)
        {

            try 
            {
                String storage_path = Environment.getExternalStorageDirectory().toString() + File.separator + smsFile;
                FileWriter write = new FileWriter(storage_path);

                write.append("messageId, threadId, Address, Name, Date, msg, type");
                write.append('\n');
                write.append('\n');


                for (String s : list)
                {
                    write.append(s);
                    write.append('\n');
                }
                write.flush();
                write.close();
            }

            catch (NullPointerException e) 
            {
                System.out.println("Nullpointer Exception "+e);
                 //  e.printStackTrace();
             }
            catch (IOException e) 
            {
                e.printStackTrace();
            }
            catch (Exception e) 
            {
                e.printStackTrace();
           }

        }
    });  
线路

    backup=(Button)findViewById(R.id.backup);
    backup.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View arg0) {

            backupSMS();
        }
             public ArrayList<String> smsBuffer = new ArrayList<String>();
                String smsFile = "SMS"+".csv";



        private void backupSMS() {
            smsBuffer.clear();
            Uri mSmsinboxQueryUri = Uri.parse("content://sms/inbox");
            Cursor cursor1 = getContentResolver().query(
                    mSmsinboxQueryUri,
                    new String[] { "_id", "thread_id", "address", "person", "date",
                            "body", "type" }, null, null, null);
            //startManagingCursor(cursor1);
            String[] columns = new String[] { "_id", "thread_id", "address", "person", "date", "body",
                    "type" };
            if (cursor1.getCount() > 0) {
                String count = Integer.toString(cursor1.getCount());
                Log.d("Count",count);
                while (cursor1.moveToNext()) {

                     String messageId = cursor1.getString(cursor1
                            .getColumnIndex(columns[0]));

                     String threadId = cursor1.getString(cursor1
                            .getColumnIndex(columns[1]));

                    String address = cursor1.getString(cursor1
                            .getColumnIndex(columns[2]));
                    String name = cursor1.getString(cursor1
                            .getColumnIndex(columns[3]));
                    String date = cursor1.getString(cursor1
                            .getColumnIndex(columns[4]));
                    String msg = cursor1.getString(cursor1
                            .getColumnIndex(columns[5]));
                    String type = cursor1.getString(cursor1
                            .getColumnIndex(columns[6]));



                    smsBuffer.add(messageId + ","+ threadId+ ","+ address + "," + name + "," + date + " ," + msg + " ,"
                            + type);

                }           
                generateCSVFileForSMS(smsBuffer);
            }               
        }


         private void generateCSVFileForSMS(ArrayList<String> list)
        {

            try 
            {
                String storage_path = Environment.getExternalStorageDirectory().toString() + File.separator + smsFile;
                FileWriter write = new FileWriter(storage_path);

                write.append("messageId, threadId, Address, Name, Date, msg, type");
                write.append('\n');
                write.append('\n');


                for (String s : list)
                {
                    write.append(s);
                    write.append('\n');
                }
                write.flush();
                write.close();
            }

            catch (NullPointerException e) 
            {
                System.out.println("Nullpointer Exception "+e);
                 //  e.printStackTrace();
             }
            catch (IOException e) 
            {
                e.printStackTrace();
            }
            catch (Exception e) 
            {
                e.printStackTrace();
           }

        }
    });  
String smsFile=“SMS”+“.csv”

    backup=(Button)findViewById(R.id.backup);
    backup.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View arg0) {

            backupSMS();
        }
             public ArrayList<String> smsBuffer = new ArrayList<String>();
                String smsFile = "SMS"+".csv";



        private void backupSMS() {
            smsBuffer.clear();
            Uri mSmsinboxQueryUri = Uri.parse("content://sms/inbox");
            Cursor cursor1 = getContentResolver().query(
                    mSmsinboxQueryUri,
                    new String[] { "_id", "thread_id", "address", "person", "date",
                            "body", "type" }, null, null, null);
            //startManagingCursor(cursor1);
            String[] columns = new String[] { "_id", "thread_id", "address", "person", "date", "body",
                    "type" };
            if (cursor1.getCount() > 0) {
                String count = Integer.toString(cursor1.getCount());
                Log.d("Count",count);
                while (cursor1.moveToNext()) {

                     String messageId = cursor1.getString(cursor1
                            .getColumnIndex(columns[0]));

                     String threadId = cursor1.getString(cursor1
                            .getColumnIndex(columns[1]));

                    String address = cursor1.getString(cursor1
                            .getColumnIndex(columns[2]));
                    String name = cursor1.getString(cursor1
                            .getColumnIndex(columns[3]));
                    String date = cursor1.getString(cursor1
                            .getColumnIndex(columns[4]));
                    String msg = cursor1.getString(cursor1
                            .getColumnIndex(columns[5]));
                    String type = cursor1.getString(cursor1
                            .getColumnIndex(columns[6]));



                    smsBuffer.add(messageId + ","+ threadId+ ","+ address + "," + name + "," + date + " ," + msg + " ,"
                            + type);

                }           
                generateCSVFileForSMS(smsBuffer);
            }               
        }


         private void generateCSVFileForSMS(ArrayList<String> list)
        {

            try 
            {
                String storage_path = Environment.getExternalStorageDirectory().toString() + File.separator + smsFile;
                FileWriter write = new FileWriter(storage_path);

                write.append("messageId, threadId, Address, Name, Date, msg, type");
                write.append('\n');
                write.append('\n');


                for (String s : list)
                {
                    write.append(s);
                    write.append('\n');
                }
                write.flush();
                write.close();
            }

            catch (NullPointerException e) 
            {
                System.out.println("Nullpointer Exception "+e);
                 //  e.printStackTrace();
             }
            catch (IOException e) 
            {
                e.printStackTrace();
            }
            catch (Exception e) 
            {
                e.printStackTrace();
           }

        }
    });  
需要更改为类似的内容

    backup=(Button)findViewById(R.id.backup);
    backup.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View arg0) {

            backupSMS();
        }
             public ArrayList<String> smsBuffer = new ArrayList<String>();
                String smsFile = "SMS"+".csv";



        private void backupSMS() {
            smsBuffer.clear();
            Uri mSmsinboxQueryUri = Uri.parse("content://sms/inbox");
            Cursor cursor1 = getContentResolver().query(
                    mSmsinboxQueryUri,
                    new String[] { "_id", "thread_id", "address", "person", "date",
                            "body", "type" }, null, null, null);
            //startManagingCursor(cursor1);
            String[] columns = new String[] { "_id", "thread_id", "address", "person", "date", "body",
                    "type" };
            if (cursor1.getCount() > 0) {
                String count = Integer.toString(cursor1.getCount());
                Log.d("Count",count);
                while (cursor1.moveToNext()) {

                     String messageId = cursor1.getString(cursor1
                            .getColumnIndex(columns[0]));

                     String threadId = cursor1.getString(cursor1
                            .getColumnIndex(columns[1]));

                    String address = cursor1.getString(cursor1
                            .getColumnIndex(columns[2]));
                    String name = cursor1.getString(cursor1
                            .getColumnIndex(columns[3]));
                    String date = cursor1.getString(cursor1
                            .getColumnIndex(columns[4]));
                    String msg = cursor1.getString(cursor1
                            .getColumnIndex(columns[5]));
                    String type = cursor1.getString(cursor1
                            .getColumnIndex(columns[6]));



                    smsBuffer.add(messageId + ","+ threadId+ ","+ address + "," + name + "," + date + " ," + msg + " ,"
                            + type);

                }           
                generateCSVFileForSMS(smsBuffer);
            }               
        }


         private void generateCSVFileForSMS(ArrayList<String> list)
        {

            try 
            {
                String storage_path = Environment.getExternalStorageDirectory().toString() + File.separator + smsFile;
                FileWriter write = new FileWriter(storage_path);

                write.append("messageId, threadId, Address, Name, Date, msg, type");
                write.append('\n');
                write.append('\n');


                for (String s : list)
                {
                    write.append(s);
                    write.append('\n');
                }
                write.flush();
                write.close();
            }

            catch (NullPointerException e) 
            {
                System.out.println("Nullpointer Exception "+e);
                 //  e.printStackTrace();
             }
            catch (IOException e) 
            {
                e.printStackTrace();
            }
            catch (Exception e) 
            {
                e.printStackTrace();
           }

        }
    });  
String smsFile = "SMS-" + SystemClock.currentThreadTimeMillis() + ".csv";

每次都应该创建一个新的备份文件。

我无法将代码作为注释发布到您要求创建目录的内容中

    backup=(Button)findViewById(R.id.backup);
    backup.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View arg0) {

            backupSMS();
        }
             public ArrayList<String> smsBuffer = new ArrayList<String>();
                String smsFile = "SMS"+".csv";



        private void backupSMS() {
            smsBuffer.clear();
            Uri mSmsinboxQueryUri = Uri.parse("content://sms/inbox");
            Cursor cursor1 = getContentResolver().query(
                    mSmsinboxQueryUri,
                    new String[] { "_id", "thread_id", "address", "person", "date",
                            "body", "type" }, null, null, null);
            //startManagingCursor(cursor1);
            String[] columns = new String[] { "_id", "thread_id", "address", "person", "date", "body",
                    "type" };
            if (cursor1.getCount() > 0) {
                String count = Integer.toString(cursor1.getCount());
                Log.d("Count",count);
                while (cursor1.moveToNext()) {

                     String messageId = cursor1.getString(cursor1
                            .getColumnIndex(columns[0]));

                     String threadId = cursor1.getString(cursor1
                            .getColumnIndex(columns[1]));

                    String address = cursor1.getString(cursor1
                            .getColumnIndex(columns[2]));
                    String name = cursor1.getString(cursor1
                            .getColumnIndex(columns[3]));
                    String date = cursor1.getString(cursor1
                            .getColumnIndex(columns[4]));
                    String msg = cursor1.getString(cursor1
                            .getColumnIndex(columns[5]));
                    String type = cursor1.getString(cursor1
                            .getColumnIndex(columns[6]));



                    smsBuffer.add(messageId + ","+ threadId+ ","+ address + "," + name + "," + date + " ," + msg + " ,"
                            + type);

                }           
                generateCSVFileForSMS(smsBuffer);
            }               
        }


         private void generateCSVFileForSMS(ArrayList<String> list)
        {

            try 
            {
                String storage_path = Environment.getExternalStorageDirectory().toString() + File.separator + smsFile;
                FileWriter write = new FileWriter(storage_path);

                write.append("messageId, threadId, Address, Name, Date, msg, type");
                write.append('\n');
                write.append('\n');


                for (String s : list)
                {
                    write.append(s);
                    write.append('\n');
                }
                write.flush();
                write.close();
            }

            catch (NullPointerException e) 
            {
                System.out.println("Nullpointer Exception "+e);
                 //  e.printStackTrace();
             }
            catch (IOException e) 
            {
                e.printStackTrace();
            }
            catch (Exception e) 
            {
                e.printStackTrace();
           }

        }
    });  
File file = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + 
    "/" + getPackageName() + 
    "/SMS-" + System.currentTimeMillis() + 
    ".csv");

if(file.mkdirs()) {
    // your code here for writing the file
    // your file is now at /sdcard/your.apps.package.name/sms-currenttime.csv
}

这将在/sdcard/your.apps.package.name/sms currenttime.csv创建一个文件

我无法将代码作为注释发布到您要求创建目录的内容中

    backup=(Button)findViewById(R.id.backup);
    backup.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View arg0) {

            backupSMS();
        }
             public ArrayList<String> smsBuffer = new ArrayList<String>();
                String smsFile = "SMS"+".csv";



        private void backupSMS() {
            smsBuffer.clear();
            Uri mSmsinboxQueryUri = Uri.parse("content://sms/inbox");
            Cursor cursor1 = getContentResolver().query(
                    mSmsinboxQueryUri,
                    new String[] { "_id", "thread_id", "address", "person", "date",
                            "body", "type" }, null, null, null);
            //startManagingCursor(cursor1);
            String[] columns = new String[] { "_id", "thread_id", "address", "person", "date", "body",
                    "type" };
            if (cursor1.getCount() > 0) {
                String count = Integer.toString(cursor1.getCount());
                Log.d("Count",count);
                while (cursor1.moveToNext()) {

                     String messageId = cursor1.getString(cursor1
                            .getColumnIndex(columns[0]));

                     String threadId = cursor1.getString(cursor1
                            .getColumnIndex(columns[1]));

                    String address = cursor1.getString(cursor1
                            .getColumnIndex(columns[2]));
                    String name = cursor1.getString(cursor1
                            .getColumnIndex(columns[3]));
                    String date = cursor1.getString(cursor1
                            .getColumnIndex(columns[4]));
                    String msg = cursor1.getString(cursor1
                            .getColumnIndex(columns[5]));
                    String type = cursor1.getString(cursor1
                            .getColumnIndex(columns[6]));



                    smsBuffer.add(messageId + ","+ threadId+ ","+ address + "," + name + "," + date + " ," + msg + " ,"
                            + type);

                }           
                generateCSVFileForSMS(smsBuffer);
            }               
        }


         private void generateCSVFileForSMS(ArrayList<String> list)
        {

            try 
            {
                String storage_path = Environment.getExternalStorageDirectory().toString() + File.separator + smsFile;
                FileWriter write = new FileWriter(storage_path);

                write.append("messageId, threadId, Address, Name, Date, msg, type");
                write.append('\n');
                write.append('\n');


                for (String s : list)
                {
                    write.append(s);
                    write.append('\n');
                }
                write.flush();
                write.close();
            }

            catch (NullPointerException e) 
            {
                System.out.println("Nullpointer Exception "+e);
                 //  e.printStackTrace();
             }
            catch (IOException e) 
            {
                e.printStackTrace();
            }
            catch (Exception e) 
            {
                e.printStackTrace();
           }

        }
    });  
File file = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + 
    "/" + getPackageName() + 
    "/SMS-" + System.currentTimeMillis() + 
    ".csv");

if(file.mkdirs()) {
    // your code here for writing the file
    // your file is now at /sdcard/your.apps.package.name/sms-currenttime.csv
}

这将在/sdcard/your.apps.package.name/sms currenttime.csv创建一个文件

您的意思是需要多个备份,在这种情况下,您可以为所有备份指定不同的名称(可能使用当前时间)然后保存到名为“smsbackups”的文件夹或其他文件夹中,然后执行还原操作,只需将该文件夹中的所有文件添加到列表中,然后用户选择要还原的文件?您的意思是要进行多次备份,在这种情况下,您可以为所有备份指定不同的名称(可能使用当前时间)然后保存到一个名为“smsbackups”的文件夹或其他什么地方,然后执行还原操作,只需将该文件夹中的所有文件添加到列表中,用户就可以选择要还原的文件了?哇,太棒了,它可以工作了。衷心感谢你。但我仍然有一个问题,它没有在SD卡上制作一个文件夹,请帮助我提前感谢哇,太好了,它的工作。衷心感谢你。但我仍然有一个问题,它没有在SD卡上制作一个文件夹,请帮助我提前谢谢
    backup=(Button)findViewById(R.id.backup);
    backup.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View arg0) {

            backupSMS();
        }
             public ArrayList<String> smsBuffer = new ArrayList<String>();
                String smsFile = "SMS"+".csv";



        private void backupSMS() {
            smsBuffer.clear();
            Uri mSmsinboxQueryUri = Uri.parse("content://sms/inbox");
            Cursor cursor1 = getContentResolver().query(
                    mSmsinboxQueryUri,
                    new String[] { "_id", "thread_id", "address", "person", "date",
                            "body", "type" }, null, null, null);
            //startManagingCursor(cursor1);
            String[] columns = new String[] { "_id", "thread_id", "address", "person", "date", "body",
                    "type" };
            if (cursor1.getCount() > 0) {
                String count = Integer.toString(cursor1.getCount());
                Log.d("Count",count);
                while (cursor1.moveToNext()) {

                     String messageId = cursor1.getString(cursor1
                            .getColumnIndex(columns[0]));

                     String threadId = cursor1.getString(cursor1
                            .getColumnIndex(columns[1]));

                    String address = cursor1.getString(cursor1
                            .getColumnIndex(columns[2]));
                    String name = cursor1.getString(cursor1
                            .getColumnIndex(columns[3]));
                    String date = cursor1.getString(cursor1
                            .getColumnIndex(columns[4]));
                    String msg = cursor1.getString(cursor1
                            .getColumnIndex(columns[5]));
                    String type = cursor1.getString(cursor1
                            .getColumnIndex(columns[6]));



                    smsBuffer.add(messageId + ","+ threadId+ ","+ address + "," + name + "," + date + " ," + msg + " ,"
                            + type);

                }           
                generateCSVFileForSMS(smsBuffer);
            }               
        }


         private void generateCSVFileForSMS(ArrayList<String> list)
        {

            try 
            {
                String storage_path = Environment.getExternalStorageDirectory().toString() + File.separator + smsFile;
                FileWriter write = new FileWriter(storage_path);

                write.append("messageId, threadId, Address, Name, Date, msg, type");
                write.append('\n');
                write.append('\n');


                for (String s : list)
                {
                    write.append(s);
                    write.append('\n');
                }
                write.flush();
                write.close();
            }

            catch (NullPointerException e) 
            {
                System.out.println("Nullpointer Exception "+e);
                 //  e.printStackTrace();
             }
            catch (IOException e) 
            {
                e.printStackTrace();
            }
            catch (Exception e) 
            {
                e.printStackTrace();
           }

        }
    });