手机内部file存储

---恢复内容开始---

将数据存储到文件中

package com.example.hzq_study;

import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;

import android.app.Activity;
import android.app.Fragment.SavedState;
import android.content.Context;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.EditText;

public class MainActivity extends Activity {

private EditText edit;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
edit = (EditText) findViewById(R.id.edit);
}

@Override
protected void onDestroy() {
super.onDestroy();
String inputText = edit.getText().toString();
try {
Save(inputText);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

private void Save(String inputText) throws IOException {

FileOutputStream out = null;
BufferedWriter writer = null;
try {
out = openFileOutput("data", Context.MODE_PRIVATE);
writer = new BufferedWriter(new OutputStreamWriter(out));
writer.write(inputText);
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (writer != null) {
writer.close();
}
} catch (IOException e) {
e.printStackTrace();
}

}
}
}

从文件中读取数据

package com.example.hzq_study;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.Reader;

import android.app.Activity;
import android.app.Fragment.SavedState;
import android.content.Context;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.EditText;
import android.widget.Toast;
/**
* 手机内部存储 读取文件
* @author 侯志强
*
*/
public class MainActivity extends Activity {

private EditText edit;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
edit = (EditText) findViewById(R.id.edit);

String inputText = load();
if(!TextUtils.isEmpty(inputText)){//对字符串进行非空判断的时候使用TextUtils.isEmpty
edit.setText(inputText);//Edit_SetText是一个设置一个编辑控件的文本。
edit.setSelection(inputText.length());//设置光标到指定位置 ,将输入光标移动到文本的末尾位置以便于继续输入
Toast.makeText(this, "Restoring succeeded", Toast.LENGTH_SHORT).show();
}

}

public String load(){
FileInputStream inputStream = null;
BufferedReader reader = null;
StringBuilder content= new StringBuilder();
try {inputStream = openFileInput("data");
InputStream in = null;
reader = new BufferedReader(new InputStreamReader(in));
String line = "";
while((line = reader.readLine())!= null){
content.append(line);//在 StringBuilder 上的主要操作是 append 和 insert 方法。每个方法都能有效地将给定的数据转换成字符串,然后将该字符串的字符添加或插入到字符串生成器中。append 方法始终将这些字符添加到生成器的末端;而 insert 方法则在指定的点添加字符。 例如,如果 z 引用一个当前内容为“start”的字符串生成器对象,则该方法调用 z.append("le") 将使字符串生成器包含“startle”

}
}catch (IOException e) {
e.printStackTrace();
}
finally{
if (reader != null){
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return content.toString();
}
}

package com.atguigu.l04_datastorage;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;

import android.app.Activity;
import android.content.Context;
import android.content.res.AssetManager;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import android.widget.Toast;

/**
* 测试手机内部文件存储
*
* @author 张晓飞
*
*/
public class IFActivity extends Activity {

private ImageView iv_if;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_if);

iv_if = (ImageView) findViewById(R.id.iv_if);
}

public void save(View v) throws IOException {
//1. 得到InputStream-->读取assets下的logo.png
//得到AssetManager
AssetManager manager = getAssets();
//读取文件
InputStream is = manager.open("logo.png");
//2. 得到OutputStream-->/data/data/packageName/files/logo.png
FileOutputStream fos = openFileOutput("logo.png", Context.MODE_PRIVATE);
//3. 边读边写
byte[] buffer = new byte[1024];
int len = -1;
while((len=is.read(buffer))!=-1) {
fos.write(buffer, 0, len);
}
fos.close();
is.close();
//4. 提示
Toast.makeText(this, "保存完成", 0).show();
}

public void read(View v) {// /data/data/packageName/files/logo.png
//1. 得到图片文件的路径
// /data/data/packageName/files
String filesPath = getFilesDir().getAbsolutePath();
String imagePath = filesPath+"/logo.png";
//2. 读取加载图片文件得到bitmap对象
Bitmap bitmap = BitmapFactory.decodeFile(imagePath);
//3. 将其设置到imageView中显示
iv_if.setImageBitmap(bitmap);
}
}

---恢复内容结束---

时间: 2024-10-21 03:04:53

手机内部file存储的相关文章

android-数据存储之手机内部file存储

一.基础概要 1.说明: 1>应用程序运行需要一些较大的数据或者图片可保存在手机内部 2>文件类型:任意 3>路径:/data/data/packageName/files/ 4>卸载应用时会删除此数据文件 5>也可以设置操作数据文件的权限(同SharedPreferences) 二.练习 1>FileInputStream fis=openFileInput("logo.png");     读取文件 2>FileOutputStream f

Android——数据存储(课堂代码整理:SharedPreferences存储和手机内部文件存储)

layout文件: 1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 xmlns:tools="http://schemas.android.com/tools" 4 android:layout_width="ma

手机内部文件存储——assets目录

一.创建 1./src/main/assets 2.切换到Project视图模式,在main下新建文件夹assets 二.特点 1.和res同等级别 2.主要是存放项目中的大文件 3.文件不受R类的管理 三.API 1.AssetManager  资产管理器 1-getAssets()   得到资产管理器 2-open(文件名)   返回文件的InputStream 2.ImageView:setImageBitmap(Bitmap  实例)  设置图片视图的位图 3.Bitmap   位图:B

数据存储——手机内部文件存储

一.特点 1.存储的是任意类型的文件 2.使用IO输入输出流操作文件 3.存放的目录:/data/data/包名/files/ 4.可以设置不被其他应用操作 5.应用卸载之后,数据同时被删除 二.API 1.FileOutputStream  文件输出流 1-openFileOutput(文件名,操作模式) mode  操作模式 1>MODE_PRIVATE,不能被别的应用访问,覆盖模式 2>MODE_APPEND,不能被别的应用访问,追加模式 2-close( )关闭输出流 2.PrintS

Android——数据存储:手机内部存储

存取字符串和存取图片不相同 xml <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/et_3" android:hint="要存储的的内容"/> <EditText android:layout_width="match_parent" a

(转)获取android手机内部存储空间和外部存储空间的参数 &amp;&amp; 如何决定一个apk的安装位置

转:http://blog.csdn.net/zhandoushi1982/article/details/8560233 获取android文件系统的信息,需要Environment类和StatFs类的支持. (1)Environment 是一个提供访问环境变量的类,常用的方法有: A,getRootDirectory() ,返回File,获取Android 的根目录. B,getDataDirectory() ,返回File ,获取Android 数据目录. C,getExternalSto

数据存储——手机外部文件存储

一.特点 1.把文件存储在手机外部存储空间(SD卡)里 2.存储的是任意类型的文件 3.使用IO输入输出流操作文件 4.文件路径 1-SD卡根目录/Android/data/包名/files/[ 文件类型],应用卸载后,数据同时被删除: 2-SD卡根目录/,应用卸载之后,数据不会被同时删除. 5.需要声明权限 1-android.permission.WRITE_EXTERNAL_STORAGE,写入文件: 2-MOUNT_UNMOUNT_FILESYSTEMS,创建和删除文件. 二.API 1

手机外部文件存储(SD卡存储)

package com.atguigu.l04_datastorage; import java.io.ByteArrayOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException; import android.app.Activity;

Android中的File存储

关于Android的File存储,这里先说下Java中的File类,根据面向对象的思想,Java中对文件的操作也进行了对象的封装,这个操作文件的类就是File类,File提供了丰富的api来进行文件的操作,比如常见的createNewFile(),mkdir(),mkdirs(),exists(),isFile(),isDictory(),renameto(),delete(),getName(),getPath()....方法比较多,读者可以自行通过api文档查看,同样这一套的文件操作在And