从System over USB连接中删除时,删除的文件不会对移动设备产生影响

时间:2018-03-14 06:48:38

标签: android

我构建了一个将数据插入文件并保存在内部存储器中的应用程序,我使用MediaScannerConnection类在将移动设备连接到PC时可以看到系统中的文件但是如果我删除了任何文件,它就不会对移动设备产生影响立即

这是我的代码:

package com.example.uhf.activity;

import android.app.Activity;
import android.media.MediaScannerConnection;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

import com.example.uhf.R;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.HashSet;
import java.util.Set;


public class Main3Activity extends Activity {

    ArrayList<String> sel=new ArrayList<String>();
    ArrayList<String> arrayList=new ArrayList<String>();
    Button button,mergeandexport;
    File myExternalFile;
    private String filepath = "Folder";
    ArrayList<String> FilesInFolder ;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main3);
        button=(Button)findViewById(R.id.button);
        mergeandexport=(Button)findViewById(R.id.mergeandexport);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                finish();
            }
        });
        ListView list=(ListView)findViewById(R.id.listview);
        list.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
        FilesInFolder = GetFiles("/sdcard/Folder");
        ArrayAdapter<String> aa=new ArrayAdapter<String>                                                              (this,R.layout.rowlayout,R.id.checked,FilesInFolder.toArray(new String[0]));
        list.setAdapter(aa);
        list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int     i, long l) {
                String string = ((TextView) view).getText().toString();
                if(sel.contains(string)){
                    sel.remove(string);
                }
                else {
                    sel.add(string);
                }
            }
        });
        mergeandexport.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                marged();
            }
        });
    }
    public ArrayList<String> GetFiles(String DirectoryPath) {
        ArrayList<String> MyFiles = new ArrayList<String>();

        File f = new File(DirectoryPath);
        //f.mkdirs();
        File[] files = f.listFiles();
        if (files.length == 0)
            return null;
        else {
            for (int i=files.length-1; i>=0; i--)
                MyFiles.add(files[i].getName());
        }

        return MyFiles;
    }

    public void marged(){
        try {
            BufferedReader br=null;
            String line;
            for (int i=0;i<sel.size();i++){
                br = new BufferedReader(new InputStreamReader(new FileInputStream(new File("/sdcard/" + filepath,sel.get(i).toString()))));
                while ((line = br.readLine()) != null) {
                    arrayList.add(line);
                }
            }
        }
        catch (Exception ex) {
            ex.printStackTrace();
        }

        if(arrayList.size()==0){
            Toast.makeText(this,"Choose more than one files",Toast.LENGTH_SHORT).show();
        }
        else if(arrayList.size()==1){
            Toast.makeText(this,"Choose more than one files",Toast.LENGTH_SHORT).show();
        }
        else {
            SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yy HH-mm-ss");
            String filename = formatter.format(Calendar.getInstance().getTime()).replace(" ", "_") + ".txt";
            myExternalFile = new File("/sdcard/" + filepath, "Merged " + filename);

            try {
                // add elements to al, including duplicates
                Set<String> hs = new HashSet<String>();
                hs.addAll(arrayList);
                arrayList.clear();
                arrayList.addAll(hs);
                FileOutputStream fos = new FileOutputStream(myExternalFile);
                MediaScannerConnection.scanFile(this, new String[] {myExternalFile.toString()}, null, null);
                for (int i = 0; i < arrayList.size(); i++) {
                    String extra = arrayList.get(i) + "\n";
                    fos.write(extra.getBytes());
                }

                fos.close();
            } catch (IOException e) {
                e.printStackTrace();
            }``
            Toast.makeText(this, "File is saved in "+filepath, Toast.LENGTH_LONG).show();
        }
    }
}

0 个答案:

没有答案