Android文件读取

本文详细介绍了Android平台上的文件读写操作,包括Assets与Raw文件夹内文件的读取、内部与外部存储文件的处理、SharedPreferences配置管理以及数据库操作等,并提供了具体的实现代码。
摘要由CSDN通过智能技术生成

1.读取 Asserts文件夹中的文件

InputStream is = getResources().getAsserts().open("Asserts文件夹下的文件名");
InputStreamReader isr=new InputStreamReader(is , "UTF-8" );
BufferedReader br=new BufferedReader(isr);
String str="";
StrigBuffer sb==new StringBuffer();
while((str=br.readLine())!=null)
{
    sb.append(str);
}

PS:不是在Activity下 context.getResources()

2.读取Raw文件夹下的文件

在 res 文件夹下创建一个名为 Raw 的文件夹, 我一般把大的图片放在raw文件下.

InputStream is = getResources().openRawResource( R.raw.info );   //info 为文件名 
InputStreamReader isr=new InputStreamReader(is, "UTF-8");
BufferedReader br=new BufferedReader(isr);
String str="";
StrigBuffer sb==new StringBuffer();
while((str=br.readLine())!=null)
{
    sb.append(str);
}

取出大图片

public static Bitmap getBitmap(int rawResource){
        BitmapFactory.Options opt = new BitmapFactory.Options();
        opt.inPreferredConfig = Bitmap.Config.RGB_565;
        opt.inPurgeable = true;
        opt.inInputShareable = true;
        InputStream is = Global.globalContext.getResources().openRawResource(rawResource);
        Bitmap bitmap = BitmapFactory.decodeStream(is,null, opt);
        try {
            is.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return bitmap;
    }

PS:不是在Activity下 context.getResources()

3.安卓内部存储的文件数据

String fileName="test";
/* 一、 写入 */
FileOutputStream fos = openFileOutput( filename,  Content.MODE_PRIVATE);        //写入模式为私有的

OutputStreamWriter osw=new OutputStreamWriter(fos, "UTF-8" );
osw.writeString("fadsfdasfasfsdafasfdasfasdfasdf名字啊!");
osw.flush();
fos.flush();
osw.close()
fos.close();

/*  二、读取 */
FileInputStream fis =  openFileInput( fileName );
InputStreamReader isr = new InputStreamReader( fis , "UTF-8" );
char[] input=new char[ fis.available() ]; 
isr.read(input);    

isr.close();
fis.close();

System.out.println( input.toString() );

PS:不是在Activity下 context.openFileOutput()

4.安卓外部存储的文件数据–读取

File  sdcard = Environment.getExternalStorageDirectory(); //获取SDCard的路径
File myFile=new File ( scdrd, "TextFolder" );    //后面,为名字
if( ! sdcard.exists( ) )
{
    //不存在SDCard 
} 
myFile.createNewFile();


// 写入
FileOutputStream fos = new FileOutputStream(myFile);
OutputStreamWriter osw = new OutputStreamWitter(fos,  "UTF-8");
osw.witer("afadsfdasfa");
osw.flush();

osw.close();
fos.close();

5.SharedPreferences 数据

支持的数据类型
  • int
  • boolear
  • float
  • long
  • String
SharedPreferences 读写操作
    SharedPrefences prefences =getPreferences(Activity.MODE_PRIVATE);
    Editor editor = prefences.edit();
    String key="myValue";
    editor.putString( myValue, "123456");
    editor.putInt("ab", 1)
    editor.putFloat("flos" ,2.4 );
    boolear ok = editor.commit();
    if(ok)
    {  输出成功  }
    else 
    {    输出失败    }
读取
 SharedPrefences prefences =getPreferences(Activity.MODE_PRIVATE);
 String str = preferences.getString(key,  "数值不存在时的默认值" );
 int i=preferences.getInt("ab", 0 );
 float f  = preferences.getFloat("flos" , 0.0f );
PreferencesActiviry的sdcard 存储的
File sdcard = Environment.getExternalStroageDirectory () ;
File myFile = new File (sdcard ,"fileName.txt")   ;    //文件名
//注意权限.....android.permission.WRITE_EXTEAGE_STORAGE....
if( !sdcard.exists())    
{
    //没有内存卡
    return ;
}
FIleInputStream fis = new FileInputSteam(myFile);
InputStreamReader isr = new InputStreamReader(fis  ,"UTF-8" );
专业的”Setting”
  • PreferenceActivity
  • PreferenceScreen

6.数据库

class db extends SQLiteOpenHelper
{
    //构造方法
    public db(Context context,String name,CursorFactoty factory ,int version)
    {}

     @override 
    oncreate(SQLiteDatabase dbs)
    {
        db.execSQL("create table "+"sqlname"+"(name text,path text,)")
    }

    @override 
    public void onUpgrade()
    {

    }

}

7.获取未安装的APK信息

public Drawable getApkIcon(Context context, String apkPath)
{
   PackageManager pm = context.getPackageManager();
   PackageInfo info=pm.getPackageArchiveInfo(apkPath,PackageManager.GET_ACTIVITIES);
    if(info != null)
    {
      ApplicationInfo appInfo = info.applicationInfo;
      appInfo.sourceDir = apkPath;
      appInfo.publicSourceDir = apkPath;
    try
    {
         String label = appInfo.loadLabel(pm).toString();
         Log.e("应用中文名:", label);

         String packageName = appInfo.packageName;
         Log.e("包名:", packageName);

        return appInfo.loadIcon(pm);
      }
    catch(OutOfMemoryError e)
    {
       Log.e("ApkIconLoader", e.toString());
    }
   }
    return null;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值