歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Android 自動創建文件到scard卡並保存

Android 自動創建文件到scard卡並保存

直接上Activity代碼:

public class DRMPTestActivity extends Activity implements OnClickListener{
   
    String fileName = "";
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
       
    }


 /* (non-Javadoc)
  * @see android.view.View.OnClickListener#onClick(android.view.View)
  */
 @Override
 public void onClick(View v) {
 
  // TODO Auto-generated method stub
  switch (v.getId()) {
  case R.id.save:
   Time t = new Time();
   t.setToNow();
   //定義文件名稱
   fileName = "DRMP-" + t.year + t.month + t.monthDay
     + t.hour + t.minute + ".txt";
   final EditText fileText =  new EditText(DRMPTestActivity.this);
   fileText.setText(fileName);
   // 定義一個對話框
   new AlertDialog.Builder(DRMPTestActivity.this)
    .setTitle("請輸入文件名")// 標題
    .setIcon(android.R.drawable.ic_dialog_info)// 圖標
    .setView(fileText)// 為對話框傳入了一個文本編輯框
    .setPositiveButton("確定",
     // 對話框監聽事件
     new DialogInterface.OnClickListener() {
      public void onClick(DialogInterface dialog,
         int whichButton) {
       String temp = fileText.getText().toString();
       if (temp != null || temp != ""){
        fileName = temp;
       }
       String data = “哈回家啊就是開始卡”;
       
       WriteData(fileName, data);
       Toast.makeText(getApplicationContext(), "\""+fileName+"\"正在保存...", Toast.LENGTH_LONG)
       .show();
      }
     }).setNegativeButton("取消", null).show();
   
   break;
  }
 
 } 
 
 // 將數據存儲到SD卡,filename為文件名,data為要存儲的內容
 private void WriteData(String fileName, String data) {
  FileService fileService = new FileService(getApplicationContext());
  try {
   // 判斷SDCard是否存在並且可以讀寫
   if (Environment.getExternalStorageState().equals(
     Environment.MEDIA_MOUNTED)) {
    fileService.saveToSD(fileName, data);
   } else {
   
   }
  } catch (FileNotFoundException e) {
   e.printStackTrace();
  } catch (IOException e) {
   e.printStackTrace();
  }
 }

}

fileService代碼:

package com.cmdi.util;

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

import android.content.Context;

public class FileService {

 private Context context;

 public FileService(Context context) {
  super();
  this.context = context;
 }

 /**
  * 寫入文件到SD卡
  *
  * @throws IOException
  */
 public void saveToSD(String fileNameStr, String fileContentStr)
   throws IOException {

  // 備注:Java File類能夠創建文件或者文件夾,但是不能兩個一起創建
  File file = new File("/mnt/sdcard/DRMP");

  if (!file.exists()) {
   file.mkdir();
  }
  File file1 = new File(file, fileNameStr);

  FileOutputStream fos = new FileOutputStream(file1,true);
  fos.write(fileContentStr.getBytes());
  fos.close();
 
 
 }

 /**
  * 保存文件到手機
  *
  * @param fileNameStr
  *            文件名
  * @param fileContentStr
  *            文件內容
  * @throws IOException
  */
 public void save(String fileNameStr, String fileContentStr)
   throws IOException {
  // 私有操作模式:創建出來的文件只能被本應用訪問,其它應用無法訪問該文件,另外采用私有操作模式創建的文件,寫入文件中的內容會覆蓋原文件的內容
  FileOutputStream fos = context.openFileOutput(fileNameStr,
    context.MODE_PRIVATE);
  fos.write(fileContentStr.getBytes());
  fos.close();
 }

 public void saveAppend(String fileNameStr, String fileContentStr)
   throws IOException {
  // 追加操作模式:不覆蓋源文件,但是同樣其它應用無法訪問該文件
  FileOutputStream fos = context.openFileOutput(fileNameStr,
    context.MODE_APPEND);
  fos.write(fileContentStr.getBytes());
  fos.close();
 }

 public void saveReadable(String fileNameStr, String fileContentStr)
   throws IOException {
  // 讀取操作模式:可以被其它應用讀取,但不能寫入
  FileOutputStream fos = context.openFileOutput(fileNameStr,
    context.MODE_WORLD_READABLE);
  fos.write(fileContentStr.getBytes());
  fos.close();
 }

 public void saveWriteable(String fileNameStr, String fileContentStr)
   throws IOException {
  // 寫入操作模式:可以被其它應用寫入,但不能讀取
  FileOutputStream fos = context.openFileOutput(fileNameStr,
    context.MODE_WORLD_WRITEABLE);
  fos.write(fileContentStr.getBytes());
  fos.close();
 }

 public void saveReadWriteable(String fileNameStr, String fileContentStr)
   throws IOException {
  // 讀寫操作模式:可以被其它應用讀寫
  FileOutputStream fos = context.openFileOutput(fileNameStr,
    context.MODE_WORLD_READABLE + context.MODE_WORLD_WRITEABLE);
  fos.write(fileContentStr.getBytes());
  fos.close();
 }

 /**
  * 讀取文件內容
  *
  * @param fileNamestr
  *            文件名
  * @return
  * @throws IOException
  */
 public String read(String fileNamestr) throws IOException {
  FileInputStream fis = context.openFileInput(fileNamestr);
  ByteArrayOutputStream bos = new ByteArrayOutputStream();
  byte[] buffer = new byte[1024];
  int len = 0;
  while ((len = fis.read(buffer)) != -1) {
   bos.write(buffer, 0, len);
  }
  byte[] data = bos.toByteArray();

  return new String(data);
 }

}

注意:在主配置文件中需要添加權限
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

以上是其主要代碼,想下載DEMO的可以到Linux公社資源下載

免費下載地址在 http://linux.linuxidc.com/

用戶名與密碼都是www.linuxidc.com

具體下載目錄在 /2013年資料/12月/6日/Android 自動創建文件到scard卡並保存

下載方法見 http://www.linuxidc.com/Linux/2013-07/87684.htm

注意由於這個Demo還有文件上傳功能所以還需要你自己修改,選擇其中有用的部分

更多Android相關信息見Android 專題頁面 http://www.linuxidc.com/topicnews.aspx?tid=11

Copyright © Linux教程網 All Rights Reserved