sp,文件以及SDcard存储

XML:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

<Button
        android:id="@+id/btnWrite"
        android:layout_width="match_parent"
        android:layout_marginTop="20dp"
        android:layout_height="wrap_content"
        android:text="sp存储" />

<Button
        android:id="@+id/btnRead"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="sp读取" />

<Button
        android:id="@+id/btnfileWrite"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="文件存储" />
   
    <Button
        android:id="@+id/btnfileRead"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="文件读取" />
   
    <Button
        android:id="@+id/btnFileWriteToSd"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="SDCard存储" />
   
    <Button
        android:id="@+id/btnFileReadToSd"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="SDCard读取" />
</LinearLayout>

Activity:

public class ShareActivity extends Activity implements OnClickListener {

@Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.sharepreference);
  findViewById(R.id.btnWrite).setOnClickListener(this);
  findViewById(R.id.btnRead).setOnClickListener(this);
  findViewById(R.id.btnFileWriteToSd).setOnClickListener(this);
  findViewById(R.id.btnfileWrite).setOnClickListener(this);
  findViewById(R.id.btnfileRead).setOnClickListener(this);
  findViewById(R.id.btnFileReadToSd).setOnClickListener(this);
 }
 @Override
 public void onClick(View v) {
  switch (v.getId()) {
  case R.id.btnWrite:
   SharedPreferences sp = getSharedPreferences("setting",
     Context.MODE_PRIVATE);
   SharedPreferences.Editor editor = sp.edit();
   editor.putString("name", "张三");
   editor.putInt("age", 25);
   editor.putInt("weight", 120);
   editor.commit();
   break;
  case R.id.btnRead:
   SharedPreferences spread = getSharedPreferences("setting",
     Context.MODE_PRIVATE);
   String name = spread.getString("name", "null");
   int age = spread.getInt("age", 18);
   int weight = spread.getInt("weight", 15);
   Toast.makeText(this, name + "--" + age + "--" + weight,
     Toast.LENGTH_LONG).show();
   break;
  case R.id.btnfileWrite:
   writeFile();
   break;
  case R.id.btnfileRead:
   readFile();
   break;
  case R.id.btnFileWriteToSd:
            writeFilesToSDCard();
   break;
  case R.id.btnFileReadToSd:
   readFilesFromSDCard();
   break;
  }

}
 // 写文件
 public void writeFile() {
  FileOutputStream os = null;
  try {
   os = this.openFileOutput("jerei.txt", Context.MODE_PRIVATE);
   os.write("姓名:张三".getBytes());
   os.write("年龄:25".getBytes());
   os.write("体重:100".getBytes());
  } catch (FileNotFoundException e) {
   e.printStackTrace();
  } catch (IOException e) {
   e.printStackTrace();
  } finally {
   if (os != null) {
    try {
     os.close();
    } catch (IOException e) {
     e.printStackTrace();
    }
    os = null;
   }
  }

}
//读文件
 public void readFile() {
  FileInputStream is = null;
  StringBuilder sb = new StringBuilder();
  try {
   is = this.openFileInput("jerei.txt");
   byte[] buffer = new byte[1024];
   int len = 0;
   while ((len = is.read(buffer)) != -1) {
    String tmp = new String(buffer, 0, len);
    sb.append(tmp);
   }
  } catch (FileNotFoundException e) {

e.printStackTrace();
  } catch (IOException e) {

e.printStackTrace();
  } finally {
   if (is != null) {
    try {
     is.close();
    } catch (IOException e) {

e.printStackTrace();
    }
   }
  }
  Toast.makeText(this, sb.toString(), Toast.LENGTH_LONG).show();
 }
//存进SD卡
 public void writeFilesToSDCard() {
  String filePath = null;
  if (Environment.getExternalStorageState().equals(
    Environment.MEDIA_MOUNTED)) {
   // 获取SDCard根路径
   filePath = Environment.getExternalStorageDirectory().toString();
   filePath = filePath + File.separator + "jerei" + File.separator
     + "edu";
   File fileParent = new File(filePath);
   if (!fileParent.exists()) {
    fileParent.mkdirs();
   }
   FileOutputStream os = null;
   try {
    os = new FileOutputStream(new File(fileParent, "a.txt"));
    os.write("向SDCard中写入文件!!".getBytes());
   } catch (FileNotFoundException e) {
    e.printStackTrace();
   } catch (IOException e) {
    e.printStackTrace();
   } finally {
    if (os != null) {
     try {
      os.close();
     } catch (IOException e) {
      e.printStackTrace();
     }
    }
   }
  }
 }

//读取SD卡
 public void readFilesFromSDCard(){
  FileInputStream is=null;
  StringBuilder sb=new StringBuilder();
  try {
   is=this.openFileInput("a.txt");
   byte[] buffer = new byte[1024];
   int len = 0;
   while ((len = is.read(buffer)) != -1) {
    String tmp = new String(buffer, 0, len);
    sb.append(tmp);
   }
  } catch (FileNotFoundException e) {
   
   e.printStackTrace();
  } catch (IOException e) {
   e.printStackTrace();
  }finally{
   if(is!=null){
    try {
     is.close();
    } catch (IOException e) {
     e.printStackTrace();
    }
   }
  }
  Toast.makeText(this, sb.toString(), Toast.LENGTH_LONG).show();
 }

}

时间: 2024-10-14 07:42:55

sp,文件以及SDcard存储的相关文章

Android 常用工具类之SPUtil,可以修改默认sp文件的路径

参考: 1. 利用Java反射机制改变SharedPreferences存储路径    Singleton1900 2. Android快速开发系列 10个常用工具类 Hongyang import android.app.Activity; import android.content.Context; import android.content.ContextWrapper; import android.content.SharedPreferences; import java.io.

Android Preference存储、res/raw、asset、openFileOutput、sdcard存储、Cache详解

*res/raw.assets.其它存储的相同点: 两者目录下的文件在打包后会原封不动的保存在apk包中,不会被编译成二进制. 两者都是只读,是不能存储数据的目录. 相同都可以放文件. *res/raw.assets.其它存储的不同点: res/raw中的文件会被映射到R.java文件中,访问的时候直接使用资源ID即R.id.filename:assets文件夹下的文件不会被映射到R.java中,访问的时候需要AssetManager类. res/raw不可以有目录结构,而assets则可以有目

Android--数据持久化之内部存储、Sdcard存储

前言 之前一直在讲AndroidUI的内容,但是还没有完结,之后会慢慢补充.今天讲讲其他的,关于数据持久化的内容.对于一个应用程序而言,不可避免的要能够对数据进行存储,Android程序也不例外.而在Android中,提供了几种实现数据持久化的方法.后面会分别介绍. 在Android中,可以使用几种方式实现数据持久化: Shared Preferences:共享参数形式,一种以Key-Value的键值对形式保存数据的方式,Android内置的,一般应用的配置信息,推荐使用此种方式保存. Inte

万能存储工具类SDCard存储 /data/data/存储 assets存储 raw存储

万能存储工具类 SDCard存储  /data/data/存储  assets存储 raw存储 粘贴过去就可以用了 <uses-permission android:name="android.permission.INTERNET" /> <!-- SDCard中创建与删除文件权限 --> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS&qu

设置内部sdcard存储下限

在Android中,内部存储有一部分区域是必须预留出来供系统运行应用程序的. 但是在Android原生设计中没有考虑这点,内部存储是可以完全填充满的. 这样会导致系统在运行程序,尤其是需要操作数据库的程序时,出现SQLiteFullException的错误. 解决的方法是在sdcard.c文件中加入一个限制,比如限制当存储低于100M时,不再允许第三方应用存储媒体文件. 如adb push 文件到/storage/sdcard0/中,或录音,拍照等保存到/storage/sdcard0/中. 这

使用文件进行数据存储四种模式

视频笔记: 1.应用包名:唯一标识一个应用 2.使用文件进行数据存储: (1)Context.MODE_PRIVATE: 默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容,如果想把新写入的内容追加到原文件中,可以使用Context.MODE_APPEND (2)Context_APPEND:只能被应用本身访问:模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件. Context_WORLD_READABLE和Context_WORLD_

第3章 文件I/O(7)_高级文件操作:存储映射

8. 高级文件操作:存储映射 (1)概念: 存储映射是一个磁盘文件与存储空间的一个缓存相映射,对缓存数据的读写就相应的完成了文件的读写. (2)mmap和munmap函数 头文件 #include<sys/types.h> #include<sys/mman.h> 函数 void* mmap(void* addr, size_t length, int prot, int flags,                       int fd, off_t offset); int

Android中StatFs获取系统/sdcard存储(剩余空间)大小

package com.orgcent.util; import java.io.File; import android.os.Environment; import android.os.StatFs; public class MemoryStatus { static final int ERROR = -1; /** * 外部存储是否可用 * @return */ static public boolean externalMemoryAvailable() { return andr

Android使用Linux mount获取SdCard存储目录

Android的智能手机各不相同,现在很多Android智能手机都是自带存储,有的还带有扩展内存的Sdcard卡槽. 在Android开发中,很多时候根据Android提供的获取SdCard存储方法获取不到不到存储目录的位置,由于Android的系统是linux系统,所以我想到使用linux命令mouunt来获取linux的挂载目录. 这样呢,基本上在Android上都可以获取到应用数据存放的目录. 使用命令获取到的目录我并没有遍历,如果你还是获取不到,可以把mount获去到的所有目录都遍历一次