«

Android 中IO 操作数据总结

时间:2024-3-2 19:54     作者:韩俊     分类: Android


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();

    }



    }

    }

标签: android

热门推荐