Android創建文件與備份文件

這段時間電腦被朋友借走了,沒有寫文章。晚上使用Kindle看看科技類的書籍,推薦《浪潮之巔》。代碼不多,直接貼出來。


public class MainActivity extends Activity {

    Button mCreateBtn;
    Button mCopyBtn;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // 初始化按鈕組件
        findview();

    }

    private void getCurrenFilePath() {
        // 獲取當前APP目錄下的files目錄路徑
        File path = this.getFilesDir();
        Log.i("TAG", path.toString());
        // 創建新文件路徑和文件名
        File Tempfile = new File(path.toString() + "temp.txt");
        if (!Tempfile.exists()) {
            try {
                // 創建新文件
                Tempfile.createNewFile();

                inputSting(Tempfile, "this is a tempfile");

            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }

    }

    private void inputSting(File filepath, String str) {
        try {
            FileWriter fw = new FileWriter(filepath, true);
            BufferedWriter bw = new BufferedWriter(fw);
            // 將傳入的str寫入文件中
            bw.write(str + "\n");
            bw.newLine();
            bw.flush();
            bw.close();
            fw.close();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    private void findview() {
        // TODO Auto-generated method stub
        mCreateBtn = (Button) findViewById(R.id.Create_btn);
        mCopyBtn = (Button) findViewById(R.id.Copy_btn);
        mCreateBtn.setOnClickListener(new BtnOnClick());
        mCopyBtn.setOnClickListener(new BtnOnClick());
    }

    private void copyFile() {
        //文件路徑
        String FROMPATH = "";
        //複製文件存放路徑
        String TOPATH = "";
        //APP目錄下
        FROMPATH = this.getFilesDir().toString();
        String lStorageState = Environment.getExternalStorageState();
        if (Environment.MEDIA_MOUNTED.equals(lStorageState)) {
            // 可讀寫 創建文件目錄
            File SDirectory = Environment.getExternalStorageDirectory();
            String filePath = SDirectory.getPath() + "/copyfile";
            File TempFilePath = new File(filePath);
            if (!TempFilePath.exists()) {
                Log.i("TAG", "不存在則創建該文件夾");
                TempFilePath.mkdirs();
                // 得到存放數據庫的目錄

            } else {
                Log.i("TAG", "已創建該文件夾");
            }
            TOPATH = filePath;
        } else {
            Log.i("TAG", "未找到外部存儲器");
            return;
        }

        if (copy(FROMPATH, TOPATH) == 0) {
            Log.i("TAG", "備份成功");
            Toast.makeText(MainActivity.this, "文件備份成功!!!", Toast.LENGTH_SHORT).show();
        } else {
            Toast.makeText(MainActivity.this, "文件備份失敗!!!", Toast.LENGTH_SHORT).show();
        }

    }
    public int copy(String fromFile, String toFile) {
        File root = new File(fromFile);
        //獲取當前日期
        SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyyMMdd_HHmmss");
        java.util.Date currendata = new java.util.Date();
        //以日期命名文件名
        String date = sDateFormat.format(currendata);
        Log.i("TAG", date);
        toFile = toFile + "/" + date + ".txt";
        if (!root.exists()) {
            return -1;
        }
        InputStream fosfrom;
        try {
            fosfrom = new FileInputStream(fromFile);
            //將源文件的輸入流輸出到創建的文件夾下
            OutputStream fosto = new FileOutputStream(toFile);
            byte bt[] = new byte[1024];
            int c;
            while ((c = fosfrom.read(bt)) > 0) {
                fosto.write(bt, 0, c);
                Log.i("TAG", "複製完成");
            }
            fosfrom.close();
            fosto.close();
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return 0;
    }
    //按鈕的點擊事件
    private class BtnOnClick implements OnClickListener {

        @Override
        public void onClick(View v) {
            switch (v.getId()) {
            case R.id.Create_btn:
                getCurrenFilePath();
                break;
            case R.id.Copy_btn:
                copyFile();
                break;
            default:
                break;
            }
        }
    }
}

這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章