在日常开发中,安卓与服务器通信时,经常会碰到服务器接口未完成或者为了加快项目进度,安卓端需要自行调试接口的情况。
这时利用模拟数据进行先行测试是一个很好的选择。
一.基本逻辑
将目标数据(json/xml/其他数据),存成txt,复制到assets目录下(需要手动新建,位于main目录下和src/java等同级)。
然后用以下代码将数据读出来(读成字符串/输出到本地目录 都可以)。
二.相关代码
2.1 读到字符串里
public static String getFromAssets(Context context,String fileName){ String Result=""; try { InputStreamReader inputReader = new InputStreamReader(context.getAssets().open(fileName) ); BufferedReader bufReader = new BufferedReader(inputReader); String line=""; while((line = bufReader.readLine()) != null) Result += line; return Result; } catch (Exception e) { e.printStackTrace(); } return Result; }
2.2 读到本地文件里
//从assets文件夹下读文件到本地目标目录下 public static void copyFilesFassets(Context context,String oldPath,String newPath) { try { String fileNames[] = context.getAssets().list(oldPath);//获取assets目录下的所有文件及目录名 if (fileNames.length > 0) {//如果是目录 File file = new File(newPath); file.mkdirs();//如果文件夹不存在,则递归 for (String fileName : fileNames) { copyFilesFassets(context, oldPath + "/" + fileName, newPath + "/" + fileName); } } else {//如果是文件 InputStream is = context.getAssets().open(oldPath); FileOutputStream fos = new FileOutputStream(new File(newPath)); byte[] buffer = new byte[1024]; int byteCount = 0; while ((byteCount = is.read(buffer)) != -1) {//循环从输入流读取 buffer字节 fos.write(buffer, 0, byteCount);//将读取的输入流写入到输出流 } fos.flush();//刷新缓冲区 is.close(); fos.close(); } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); //如果捕捉到错误则通知UI线程 // MainActivity.handler.sendEmptyMessage(COPY_FALSE); } }