经常需要用到读取“/res/raw”和"/asserts"文件夹下的文件,索性写成工具类方便以后使用。
一、raw文件夹下的文件操作工具类:
/** * raw文件夹下的文件处理工具类 * * */ public class RawFileUtils { private RawFileUtils( ){ } /** * 读取raw文件夹下的文件 * @param resourceId raw文件夹下的文件资源ID * @return 文件内容 * * */ public static String readFileFromRaw(Context context, int resourceId) { if( null == context || resourceId < 0 ){ return null; } String result = null; try { InputStream inputStream = context.getResources().openRawResource( resourceId ); // 获取文件的字节数 int length = inputStream.available(); // 创建byte数组 byte[] buffer = new byte[length]; // 将文件中的数据读到byte数组中 inputStream.read(buffer); result = EncodingUtils.getString(buffer, "utf-8"); } catch (Exception e) { e.printStackTrace(); } return result; } }
/** * asserts文件处理 * * */ public class AssertsFileUtils { private AssertsFileUtils( ){ } /** * 读取asserts目录下的文件 * @param fileName eg:"updatelog.txt" * @return 对应文件的内容 * * */ public static String readFileFromAssets(Context context, String fileName) throws IOException, IllegalArgumentException { if (null == context || TextUtils.isEmpty( fileName )){ throw new IllegalArgumentException( "bad arguments!" ); } AssetManager assetManager = context.getAssets(); InputStream input = assetManager.open(fileName); ByteArrayOutputStream output = new ByteArrayOutputStream(); byte[] buffer = new byte[1024]; int length = 0; while ((length = input.read(buffer)) != -1) { output.write(buffer, 0, length); } output.close(); input.close(); return output.toString(); } /** * 列出Asserts文件夹下的所有文件 * @return asserts目录下的文件名列表 * * */ public static List<String> getAssertsFiles( Context context ) throws IllegalArgumentException{ if( null == context ){ throw new IllegalArgumentException( "bad arguments!" ); } AssetManager assetManager = context.getAssets(); String[] files = null; try { files = assetManager.list(""); } catch (IOException e) { e.printStackTrace( ); } return ( null == files )?null:Arrays.asList( files ); } }
原文地址:http://blog.csdn.net/ekeuy/article/details/39479201