`

数据保存到sd卡上

阅读更多

1 关键代码

 

package cn.lee.data;

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

import cn.lee.Manager.DataManager;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class AboutDateActivity extends Activity {
 private EditText fileNameEditText;
 private EditText fileContentEditText;
 private EditText readfileContentEditText;
 private Button button;
 private Button readButton;
 private static final String TAGSTRING = "AboutDateActivity";

 /** Called when the activity is first created. */
 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);

  button = (Button) this.findViewById(R.id.button);
  readButton = (Button) this.findViewById(R.id.readButton);
  fileNameEditText = (EditText) this.findViewById(R.id.fileName);
  fileContentEditText = (EditText) this.findViewById(R.id.fileContent);
  readfileContentEditText = (EditText) this
    .findViewById(R.id.readfileContent);

  // 读取
  readButton.setOnClickListener(onClickListener);
  // 保存
  button.setOnClickListener(onClickListener);
 }

 /**
  * 由于这个内部实现类是一个接口的实例 所以这里把他提取出来 作为一个成员变量 2010-04-18
  */
 private View.OnClickListener onClickListener = new View.OnClickListener() {
  /**
   * 由于button的父类是view 所以这里的onclick的参数传来的view v就可以找到这个button
   */
  public void onClick(View v) {
   Button button = (Button) v;// 将父类view强转成子类button
   int info = R.string.sus;  //操作成功
   String fileNameString = fileNameEditText.getText().toString();
   
   /**
    * 判断sd卡是否存在 Environment.getExternalStorageState() 得到sd卡当前的状态
    *
    * getExternalStorageState() returns MEDIA_MOUNTED if the
    * media is present and mounted at its mount point with
    * read/write access. 如果返回 MEDIA_MOUNTED表示外部存储设备存在。并且有读写的权限
    */
   
   if (Environment.getExternalStorageState().equals(
     Environment.MEDIA_MOUNTED)) {
    if ("".equals(fileNameString)) {
     info = R.string.filenamenotnull; //文件名不能为空
    } else {
     FileOutputStream fileOutputStream = null;
     FileInputStream fileInputStream = null;
     try {
      switch (button.getId()) {
      case R.id.button: {// 保存
       String fileContentString = fileContentEditText
         .getText().toString();
       /**
        * Environment.getExternalStorageDirectory();
        * 得到外存储设备的路径
        *
        */
       File file = new File(Environment
         .getExternalStorageDirectory(),
         fileNameString);
       fileOutputStream = new FileOutputStream(file);
       DataManager.saveDate(fileOutputStream,
         fileContentString);
       break;
      }

      case R.id.readButton: {
       fileInputStream = null;
       fileInputStream = AboutDateActivity.this
         .openFileInput(fileNameString);
       String contentString = DataManager
         .readDate(fileInputStream);
       readfileContentEditText.setText(contentString);
       break;
      }
      default:
       break;
      }

     } catch (Exception e) {
      // TODO Auto-generated catch block
      Log.i(TAGSTRING, e.toString());
      info = R.string.infor;
     } finally {
      try {
       if (fileOutputStream != null) {
        fileOutputStream.close();
       }
       if (fileInputStream != null) {
        fileInputStream.close();
       }

      } catch (IOException e) {

       Log.i(TAGSTRING, e.toString());
       info = R.string.infor;
      }
     }

    }
   } else {
    info = R.string.infor;
   }
   Toast.makeText(AboutDateActivity.this, info, 1).show();
  }

 };
}

 

2 资源文件

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="cn.lee.data"
      android:versionCode="1"
      android:versionName="1.0">
    <application android:icon="@drawable/icon" android:label="@string/app_name">
     <uses-library  android:name="android.test.runner" />
        <activity android:name=".AboutDateActivity"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

    </application>
    <uses-sdk android:minSdkVersion="7" />
 <instrumentation android:name="android.test.InstrumentationTestRunner" android:targetPackage="cn.lee.data"
 android:label="Test for my app"/>
 <!-- 允许程序访问外部存储设备 -->
 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
 <!-- 允许创建和删除外部存储设备的文件 -->
 <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
</manifest>

 

 

3 业务service

 

package cn.lee.Manager;

import java.io.ByteArrayOutputStream;

import java.io.InputStream;
import java.io.OutputStream;

public class DataManager {
 /**
  * 没有使用成员变量的方法可以定义为静态方法
  * 保存数据的业务逻辑
  * OutputStream 输出流
  * content 文件内容
  * @throws Exception
  */
 public static void saveDate (OutputStream outputStream , String contentString) throws Exception
 {
  outputStream.write(contentString.getBytes());
  outputStream.close();
 }
 /**
  * 读取数据的业务逻辑
  * @param InputStream
  * @param contentString
  * @throws Exception
  */
 public static  String readDate (InputStream inputStream ) throws Exception
 {
  byte [] byte1 = new byte[1024];
  /**
   * 当输入流读到文件的末尾 返回就是-1
   */
  int length = inputStream.read(byte1);
  ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
  if(length!=-1)
  {
   //读到的内容存在内存中ByteArrayOutputStream 这个类用于将byte流存储在内存中
   
   byteArrayOutputStream.write(byte1, 0, length);
  }
  String dateString =   byteArrayOutputStream.toString();
  byteArrayOutputStream.close();
  inputStream.close();
  return dateString;
 }
}

分享到:
评论

相关推荐

    STM32 adc采集数据存到SD卡中

    其次,SD卡文件系统是将数据存储到SD卡上的关键。在STM32中,通常使用FatFS这样的轻量级文件系统库来实现对SD卡的读写操作。FatFS是一个通用的文件系统,兼容FAT12、FAT16和FAT32文件系统格式,广泛用于嵌入式系统。...

    51单片机读取温度数据存储到SD卡中并且串口发送出数据带proteus仿真

    标题中的“51单片机读取温度数据存储到SD卡中并且串口发送出数据带proteus仿真”指的是一个使用51系列单片机的项目,该项目实现了以下功能:周期性地从DS18B20数字温度传感器获取温度读数,将这些数据保存至SD卡,并...

    串口接收+DMA存储到SD卡.zip

    在本文中,我们将深入探讨如何使用STM32F103单片机通过串口接收外部设备发送的数据,并利用DMA(直接内存访问)技术将其高效地存储到SD卡上。这个过程涉及到微控制器的串行通信、DMA机制以及与SD卡的交互,这些都是...

    rtthread + STM32F407VE + esp8266 +SD卡 从网络下载文件存到SD卡中

    通过这样的设计,我们可以构建一个实用的系统,实现从互联网下载文件并保存到本地SD卡,为物联网应用提供了便利的数据获取和存储方案。这个项目不仅锻炼了开发者对RTOS的理解,还涵盖了嵌入式系统中的网络通信、存储...

    Python读取SD卡二进制数据

    Python的`serial`库(如pyserial)可以实现串口通信,读取串口数据,然后将这些数据保存到SD卡上的文件。 5. **文件写入**:与读取类似,Python的`write()`方法可以将二进制数据写入文件。在写入前,确保文件以二...

    SD卡内存卡数据恢复软件

    标题中的“SD卡内存卡数据恢复软件”是指一类专门用于帮助用户从SD卡或内存卡中恢复丢失数据的工具。这些工具通常适用于各种情况,如误删除、格式化、病毒感染或者硬件故障导致的数据丢失。 描述中提到的“优盘SD卡...

    异步下载图片保存到sd卡

    在Android开发中,异步下载图片并保存到SD卡是一个常见的需求,特别是在构建涉及大量图像显示的应用时。这个过程涉及到网络请求、线程管理、内存和磁盘缓存策略等多个技术点。以下是对这个主题的详细阐述: 1. **...

    SD 卡数据恢复

    标题中的“SD卡数据恢复”指的是使用特定的软件或方法来恢复在SD卡上丢失、删除或损坏的数据。SD卡广泛应用于各种电子设备,如数码相机、手机、平板电脑等,是存储个人照片、视频、文档和其他重要文件的常用媒介。当...

    SD卡数据恢复

    最后,恢复数据应保存到另一块存储设备上,避免覆盖原SD卡上的数据。 总的来说,SD卡数据恢复是一个涉及多个步骤和技术的过程,但通过专业的软件工具,如RescuePRO Deluxe,大部分情况下都能有效地恢复丢失的数据。...

    Android 获得传感器的数据保存在SD卡中

    本项目"Android 获得传感器的数据保存在SD卡中"提供了一个实现这一功能的示例,它可以在Eclipse环境下运行,并且允许自定义保存的文件名和数据更新频率。 首先,我们需要理解Android的传感器系统服务。Android提供...

    sd卡数据恢复

    不幸的是,由于各种原因,如意外格式化、病毒感染、硬件故障或不当操作,SD卡上的数据可能会丢失。在这种情况下,"sd卡数据恢复"就成为了一个重要的主题。本文将深入探讨如何通过数据恢复软件来挽回这些宝贵的数据。...

    基于stm32f407多通道数据采集,双buff,直接保存到sd卡

    在数据保存过程中,通常会采用文件系统如FAT(File Allocation Table)来组织和管理这些数据文件,使得数据在SD卡上的读写更加方便和有序。 综上所述,这个项目涉及的知识点包括: 1. STM32F407微控制器及其Cortex-...

    SD卡数据恢复软件

    SD卡数据恢复软件是一种专门设计用于帮助用户找回在SD存储卡上意外删除、格式化或因其他原因丢失的文件的工具。它具有高效且用户友好的界面,支持各种类型的SD卡,包括标准SD、Mini SD、Micro SD以及SDHC和SDXC等。...

    基于STM32的AD采集与SD卡数据存储

    本文讲述的基于STM32单片机实现AD(模拟数字)信号采集,并将采集到的数据存储到SD卡中,通过计算机软件读取SD卡上的文本数据转换成更易于管理的EXCEL格式的技术,具有重要的应用价值。 首先,本文阐述了基于STM32...

    STM32的DMA方式实现SD卡存储

    在这个项目中,我们将关注如何利用STM32F103的DMA(直接内存访问)功能来实现串口数据的高效采集,并通过FATFS文件系统将这些数据存储到SD卡上。以下是关于这个主题的详细解释: 首先,DMA是一种在没有CPU干预的...

    内存卡数据恢复

    在日常使用中,由于误删除、格式化、病毒攻击或者硬件故障,内存卡上的数据可能会丢失。本文将详细介绍内存卡数据恢复的原理、方法以及预防措施。 1. 数据恢复原理: 数据在被“删除”或“格式化”后,并非立即从...

    360内存卡数据恢复龙腾数据恢复软件

    总的来说,360内存卡数据恢复龙腾数据恢复软件提供了一种便捷的方法来恢复内存卡上的照片和其他文件,是个人用户和小型企业应对数据丢失问题的有力工具。然而,对于大型企业和组织,可能需要更专业和全面的数据保护...

    下载图片并保存到SD卡中

    标题中的“下载图片并保存到SD卡中”指的是在Android平台上,从网络上获取图片资源并将其存储到设备的外部存储(通常称为SD卡)的过程。这个过程涉及到网络请求、文件操作以及Android权限管理等技术。 首先,我们...

    相机内存卡数据恢复

    相机内存卡,如SD卡、Micro SD卡或CF卡,是用于存储照片、视频和其他数字媒体的非易失性存储设备。它们采用闪存技术,能够在断电后保持数据,但有时数据可能会因各种原因丢失。 **数据丢失的原因**: 1. **误删除**...

    大彩串口屏_SD卡操作命令_V1.0

    用户或开发者通过这些命令可以管理广州大彩串口屏上的SD卡存储,实现对文件的创建、读写、关闭、打开、大小查询以及在特定位置读取文件数据等操作。这在嵌入式系统和人机界面设备的开发和维护中是非常实用的技术点。

Global site tag (gtag.js) - Google Analytics