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的可以到帮客之家资源下载

免费下载地址在 http://linux.bkjia.com/

用户名与密码都是www.bkjia.com

具体下载目录在 /2013年资料/12月/6日/Android 自动创建文件到scard卡并保存

下载方法见

注意由于这个Demo还有文件上传功能所以还需要你自己修改,选择其中有用的部分

相关内容

    暂无相关文章