如何将内部存储器中的现有文件复制到外部存储器?

时间:2014-04-27 09:38:10

标签: android memory external file-transfer internal

我正在尝试将文件从应用程序内部存储器复制到外部存储器(SD)卡。我有些疑惑:

  1. 如何获取内部存储器中现有文件的位置?如果名称是x.txt,那么它将是:

    getApplicationContext().getFilesDir()+"x.txt" its directory? 
    

    所以我只做File file_source = new File(getApplicationContext()。getFilesDir()+" x.txt");

  2. 我知道我希望将新文件放在外部存储器中,所以我可以使用这个

    String state = Environment.getExternalStorageState();
    
            if (Environment.MEDIA_MOUNTED.equals(state))
            {
                Log.d(DEBUG_TAG, "SD card detected");
    
    
    
            stopSensorService();
    
                Log.d(DEBUG_TAG, "stopSensorService for file transfer");
    
                //make the timestamp the file name
                long TS = System.currentTimeMillis();
                StringBuilder stringBuilder = new StringBuilder();
    
                stringBuilder.append(TS);
                stringBuilder.append(".txt");
    
                String file_name = stringBuilder.toString();
    
                //file name stored in file_name
    
                ***File file_ext = new File(Environment.getExternalStoragePublicDirectory(
                        Environment.DIRECTORY_DOCUMENTS),file_name);***
               // attempt to create this new directory
                if (!file_ext.mkdirs()) {
                    Log.d(DEBUG_TAG, "Directory not created");
                }
    
  3. 下面:

    File file_ext = new File(Environment.getExternalStoragePublicDirectory(
                            Environment.DIRECTORY_DOCUMENTS),file_name);
    

    我正在尝试创建一个新文件,我可以将文件名称作为系统时间粘贴到现有文件的内容中。我不确定从这里如何将现有内部文件的内容粘贴到这个新的外部文件。我很难,我可以使用filechannel.transferto,但我不知道如何。

    我已经尝试了很多方法,现在我似乎很困惑。

    谢谢

    编辑:

    我对我的代码进行了以下更改,但它似乎没有给我一张sd卡中的文件

    View.OnClickListener export_handler = new View.OnClickListener() {
    
            public void onClick(View v)
            {
    
                String state = Environment.getExternalStorageState();
    
                if (Environment.MEDIA_MOUNTED.equals(state))
                {
                    Log.d(DEBUG_TAG, "SD card detected");
    
    
    
                stopSensorService();
    
                    Log.d(DEBUG_TAG, "stopSensorService for file transfer");
    
                    //make the timestamp the file name
                    long TS = System.currentTimeMillis();
                    StringBuilder stringBuilder = new StringBuilder();
    
                    stringBuilder.append(TS);
                    stringBuilder.append(".txt");
    
                    String file_name = stringBuilder.toString();
    
                    //file name stored in file_name
    
    
                    File file_ext = new File(Environment.getExternalStoragePublicDirectory(
                            Environment.DIRECTORY_DOCUMENTS),file_name);
    
    
    // attempt to create this new directory
    
    
    //read from sensorLog.txt file
                    try
                    {
                        file_ext.createNewFile();
    
                        FileInputStream read_file = openFileInput("sensorLog.txt");
    
    
                    //read contents of internal file
                    InputStreamReader inputStreamReader = new InputStreamReader(read_file);
                    BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
                    StringBuilder sb = new StringBuilder();
                    sb.append("Timestamp of export to SD"+TS+"/n");
                    String line;
                    while ((line = bufferedReader.readLine()) != null) {
                        sb.append(line);
                    }
                    BufferedWriter bufWr = null;
    
                   bufWr = new BufferedWriter(new FileWriter(file_ext, false));
    
    
    
                    // Write header
                    bufWr.append(sb.toString());
                    inputStreamReader.close();
                    bufWr.close();
                    read_file.close();
    
    
                    //delete sensor file once exported
                    getApplicationContext().deleteFile("sensorLog.txt");
                }
    
                    catch(Exception e){}
    

0 个答案:

没有答案
相关问题