• Java解析JSON文件的方法 (二)


    assets文件夹资源的访问

           assets文件夹里面的文件都是保持原始的文件格式,需要用AssetManager以字节流的形式读取文件。
          1. 先在Activity里面调用getAssets() 来获取AssetManager引用。
          2. 再用AssetManager的open(String fileName, int accessMode) 方法则指定读取的文件以及访问模式就能得到输入流InputStream。 
          3. 然后就是用已经open file 的inputStream读取文件,读取完成后记得inputStream.close() 。
          4.调用AssetManager.close() 关闭AssetManager。

    需要注意的是,来自Resources和Assets 中的文件只可以读取而不能进行写的操作
    以下为从Raw文件中读取:
    代码

     <div "="">   public String getFromRaw(){ 
                try { 
                    InputStreamReader inputReader = new InputStreamReader( getResources().openRawResource(R.raw.test1));
                    BufferedReader bufReader = new BufferedReader(inputReader);
                    String line="";
                    String Result="";
                    while((line = bufReader.readLine()) != null)
                        Result += line;
                    return Result;
                } catch (Exception e) { 
                    e.printStackTrace(); 
                }             
        } 
    以下为直接从assets读取
    代码
        public String getFromAssets(String fileName){ 
                try { 
                     InputStreamReader inputReader = new InputStreamReader( getResources().getAssets().open(fileName) ); 
                    BufferedReader bufReader = new BufferedReader(inputReader);
                    String line="";
                    String Result="";
                    while((line = bufReader.readLine()) != null)
                        Result += line;
                    return Result;
                } catch (Exception e) { 
                    e.printStackTrace(); 
                }
        } 
    当然如果你要得到内存流的话也可以直接返回内存流!

    <div "="">接下来,我们新建一个工程文件,命名为AssetsDemo。

    然后建立一个布局文件,如下,很简单,无需我多介绍,大家一看就明白。

    然后呢,我从网上找了段文字,存放在assets文件目录下,取名为health.txt 这就是今天我们要读取的文件啦。

    这个.txt文件,我们可以直接双击查看。如下所示。

    <div "="">接下来,就是今天的重头戏,Android读取文件的核心代码。就直接贴代码了。
    <div "="">package com.assets.cn;
    import java.io.InputStream;
    import org.apache.http.util.EncodingUtils;
    import android.app.Activity;
    import android.graphics.Color;
    import android.os.Bundle;
    import android.widget.TextView;
    public class AssetsDemoActivity extends Activity {
    public static final String ENCODING = "UTF-8";
    TextView tv1;
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            
    tv1 = (TextView)findViewById(R.id.tv1);
    tv1.setTextColor(Color.BLACK);
    tv1.setTextSize(25.0f);
    tv1.setText(getFromAssets("health.txt"));
    }

    //从assets 文件夹中获取文件并读取数据
    public String getFromAssets(String fileName){
       String result = "";
       try {
    InputStream in = getResources().getAssets().open(fileName);
    //获取文件的字节数
    int lenght = in.available();
    //创建byte数组
    byte[]  buffer = new byte[lenght];
    //将文件中的数据读到byte数组中
    in.read(buffer);
    result = EncodingUtils.getString(buffer, ENCODING);
    } catch (Exception e) {
    e.printStackTrace();
    }
    return result;
    }
    }
    <div "="">
    <div "="">

    <div "="">这里是mainfest文件。<div "=""><?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.assets.cn"
          android:versionCode="1"
          android:versionName="1.0">
        <uses-sdk android:minSdkVersion="8" />

        <application android:icon="@drawable/icon" android:label="@string/app_name">
            <activity android:name=".AssetsDemoActivity"
                      android:label="@string/app_name">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>

        </application>
    </manifest>
    <div "="">最后,我们运行一下程序。

    源码:http://files.cnblogs.com/greatverve/AssetsDemo.zip
    太忙,抽时间研究下sgf读写。url:http://greatverve.cnblogs.com/archive/2012/03/07/android-assets.html

    程序员的网店:http://shop108042866.taobao.com呵呵 
  • 相关阅读:
    LeetCode-Minimum Path Sum
    LeetCode-Validate Binary Search Tree
    LeetCode-Recover Binary Search Tree
    LeetCode-Valid Parentheses
    LeetCode-Generate Parentheses
    LeetCode-4Sum
    BZOJ 2295: [POJ Challenge]我爱你啊
    BZOJ 2725: [Violet 6]故乡的梦
    BZOJ 3672: [Noi2014]购票
    BZOJ 4327:[JSOI2012]玄武密码
  • 原文地址:https://www.cnblogs.com/lucky-star-star/p/4348456.html
Copyright © 2020-2023  润新知