您的位置:首页 > 移动开发 > Android开发

Android 中IO 操作数据总结

2015-06-26 19:21 561 查看
package com.example.File;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStream;

import org.apache.http.protocol.HTTP;

import org.apache.http.util.EncodingUtils;

import com.example.sumtest.R;

import android.app.Activity;

import android.content.res.AssetManager;

import android.os.Bundle;

import android.os.Environment;

import android.util.Xml.Encoding;

public class IOUtil extends Activity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

/**

* 1.创建并返回一个目录,此应用程序存储数据的路径

* 输出结果:getFileDir-dir1-/data/data/com.example.sumtest/files

*/

File dir = getFilesDir();

System.out.println("getFileDir-dir1-" + dir.toString());

/**

* 2.创建并返回一个目录,存储缓冲文件,当系统资源不足时会清除

* 输出结果:getCacheDir-dir2-/data/data/com.example.sumtest/cache

*/

File dir2 = getCacheDir();

System.out.println("getCacheDir-dir2-" + dir2.toString());

/**

* 3.创建并返回一个指定名称的目录,在此目录下存此文件 输出结果:

* getDir-dir3-/data/data/com.example.sumtest/app_sumtest

*/

File dir3 = getDir("sumtest", MODE_PRIVATE);

System.out.println("getDir-dir3-" + dir3);

/**

* 4.用于返回数据库中指定名称的文件路径,在内部存储中应保存的路径

* 输出结果:getDatabasePath-dir4-/data/data/

* com.example.sumtest/databases/stu.db

*/

File dir4 = getDatabasePath("stu.db");

System.out.println("getDatabasePath-dir4-" + dir4);

/**

* 5.打开一个输出流对象,通过这个对象 可以向abc.txt中写入数据 abc.txt位于

*/

try {

FileOutputStream fos = openFileOutput("abc.txt", MODE_PRIVATE);

fos.write("哈哈哈--".getBytes());

fos.flush();

fos.close();

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

/**

* 6.获得一个输入流对象,通过这个输入流对象读取指定文件,

* 这个文件在/data/data/com.example.sumtest/files下 输出结果:abc.txt-dir6哈哈哈--

*/

try {

FileInputStream fis = openFileInput("abc.txt");

byte[] bs = new byte[fis.available()];

int len = fis.read(bs);

String str = new String(bs, 0, len);

System.out.println("abc.txt-dir6" + str);

fis.close();

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

/**

* 7.获得内部存储数据的目录 输出结果: dir7-/data

*/

File dir7 = Environment.getDataDirectory();

System.out.println("dir7-" + dir7);

/**

* 8.获取内部存储下载缓冲目录,隐藏的目录 输出结果: dir8-/cache

*/

File dir8 = Environment.getDownloadCacheDirectory();

System.out.println("dir8-" + dir8);

/**

* 9.获得内部下载系统的根目录 输出结果: dir9-/system

*/

File dir9 = Environment.getRootDirectory();

System.out.println("dir9-" + dir9);

/**

* 10.创建并返回外部存储文件目录 , 需SD卡的写入权限 输出结果:

* dir10-/mnt/sdcard/Android/data/com.example.sumtest/files/Music

*/

File dir10 = getExternalFilesDir(Environment.DIRECTORY_MUSIC);

System.out.println("dir10-" + dir10);

/**

* 11.创建并返回外部缓冲目录, 需SD卡写入权限 输出结果:

* dir11-/mnt/sdcard/Android/data/com.example.sumtest/cache

*/

File dir11 = getExternalCacheDir();

System.out.println("dir11-" + dir11);

/**

* 12.返回SD卡的根目录 输出结果: dir12-/mnt/sdcard

*/

File dir12 = Environment.getExternalStorageDirectory();

System.out.println("dir12-" + dir12);

/**

* 13.返回SD卡的公共存储目录 输出结果: dir13-/mnt/sdcard/Music

*/

File dir13 = Environment

.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC);

System.out.println("dir13-" + dir13);

/**

* 14.返回SD的状态,每次使用SD卡时 ,都会检查其状态 输出结果: SdStatus-mounted

*/

String SdStatus = Environment.getExternalStorageState();

System.out.println("SdStatus-" + SdStatus);

/**

* 15.对源生资源文件的访问,在assets下放test.txt,读取并写入内部存储数据文件目录下

*/

File dir15 = getDatabasePath("test.txt");

if (!dir15.exists()) {

if (!dir15.getParentFile().exists()) {

dir15.getParentFile().mkdir();

}

AssetManager manager = getAssets();

try {

InputStream is = manager.open("test.txt");

FileOutputStream fos = new FileOutputStream(dir15);

byte[] bs = new byte[1024];

int len = 0;

while ((len = is.read(bs)) > 0) {

fos.write(bs, 0, len);

fos.flush();

}

is.close();

fos.close();

} catch (IOException e) {

e.printStackTrace();

}

}

/**

* 16.对资源文件的访问,在res/assets文件下 test.txt,读取文件中内容

* 输出结果: assets16-assetsTxt

*/

try {

InputStream is = getResources().getAssets().open("test.txt");

int len = is.available();

byte[] bs = new byte[len];

is.read(bs);

String str = EncodingUtils.getString(bs, HTTP.UTF_8);

is.close();

System.out.println("assets16-" + str);

} catch (IOException e1) {

e1.printStackTrace();

}

/**

* 17.对资源文件的访问,在res/raw文件下 test.txt,读取文件中内容

* 输出结果: raw17-rawTxt

*/

InputStream israw = getResources().openRawResource(R.raw.test);

try {

int len = israw.available();

byte[] bs = new byte[len];

israw.read(bs);//此句漏掉,读取出现乱码,原因不清楚求大神指点

String str = EncodingUtils.getString(bs, HTTP.UTF_8);

israw.close();

System.out.println("raw17-" + str);

} catch (IOException e) {

e.printStackTrace();

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: