IO操作
2015-08-26 18:04
330 查看
IO操作
字符流: Reader--FileReader(InputStreamReader)--BufferedReader--LineNumberReader Writer--FileWriter(OutputStreamWriter)--BufferedWriter 字节流: InputStream--FileInputStream--BufferedInputStream OutputStream--FileOutputStream--BufferedOutputStream ---------------------------------------- 转换流: InputStreamReader 字节流-->字符流 用于將字节流转成字符流,是Reader的子类 OutputStreamWriter 字符流-->字节流 是字符流通向字节流的桥梁,是Writer的子类 需要加入指定编码表utf-8。而指定的编码表只有转换流可以指定。 OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("d.txt"),"UTF-8");
手机文本文件的复制
//------------------------------------ // 文件的创建 //------------------------------------ File phoneDir; String state = Environment.getExternalStorageState(); if (Environment.MEDIA_MOUNTED.equals(state)) { phoneDir = Environment.getExternalStorageDirectory(); } else { phoneDir = this.getFilesDir(); } File dir = new File(phoneDir + File.separator + "IODemo"); dir.mkdirs(); File file1 = new File(dir, "demo001.txt"); File file2 = new File(dir, "demo002.txt"); try { file1.createNewFile(); } catch (IOException e) { e.printStackTrace(); } //------------------------------------ // 文件的复制 //------------------------------------ FileReader fr = null; FileWriter fw = null; try { fr = new FileReader(file1.toString());// 字符输入流 fw = new FileWriter(file2.toString());// 字符输出流 char[] buf = new char[1024]; int len = 0; while ((len = fr.read(buf)) != -1) { fw.write(buf, 0, len); } } catch (Exception e) { e.printStackTrace(); }finally{ if(fr!=null){ try { fr.close(); } catch (IOException e) { e.printStackTrace(); } } if(fw!=null){ try { fw.close(); } catch (IOException e) { e.printStackTrace(); } } }
把Assets目录下的文件拷贝到手机内存中
/** * 把Assets目录下的文件拷贝到手机内存中 */ public void copyAssetFile(String copyFileName) { // ------------------------------------ // 获取手机存储目录 // ------------------------------------ File phoneDir; String state = Environment.getExternalStorageState(); if (Environment.MEDIA_MOUNTED.equals(state)) { phoneDir = Environment.getExternalStorageDirectory(); } else { phoneDir = this.getFilesDir(); } // ------------------------------------ // 判断文件是否存在 // ------------------------------------ File outFile = new File(phoneDir, copyFileName); if (outFile.exists()) { return; } // ------------------------------------ // 文件的复制 // ------------------------------------ FileOutputStream out = null; InputStream in = null; try { out = new FileOutputStream(outFile);// 字节输出流 in = this.getAssets().open(copyFileName);// 字节输入流 int len = 0; byte[] buffer = new byte[1024]; while ((len = in.read(buffer)) != -1) { out.write(buffer, 0, len); } } catch (Exception e) { e.printStackTrace(); } finally { if (out != null) { try { out.close(); } catch (IOException e) { e.printStackTrace(); } } if (in != null) { try { in.close(); } catch (IOException e) { e.printStackTrace(); } } } }
把Assets目录下mp3复制到SD卡
public class MainActivity extends Activity { private File outFile; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //------------------------------------ // 准备文件 //------------------------------------ File phoneDir; String state = Environment.getExternalStorageState(); if (Environment.MEDIA_MOUNTED.equals(state)) { phoneDir = Environment.getExternalStorageDirectory(); } else { phoneDir = this.getFilesDir(); } outFile = new File(phoneDir, "do.mp3"); //------------------------------------ // 开始复制 //------------------------------------ long start = System.currentTimeMillis(); copyFile(outFile); long end = System.currentTimeMillis(); Log.d("ziru", "end-start=" + (end - start)); } public void copyFile(File outFile) { try { BufferedOutputStream bufos = new BufferedOutputStream( new FileOutputStream(outFile));// 字节输出流 BufferedInputStream bufis = new BufferedInputStream(getResources() .getAssets().open("do.mp3"));// 字节输入流 int buffer = 0; while ((buffer = bufis.read()) != -1) { bufos.write(buffer); } bufos.close(); bufis.close(); } catch (Exception e) { e.printStackTrace(); } } }
相关文章推荐
- 在Activity或fragment中响应ListView内部控件的点击事件
- Android or java https ssl exception
- 生产服务器环境最小化安装后 Centos 6.5优化配置备忘
- Cache应用/任务Mutex,用于高并发任务处理经过多个项目使用
- cocos studio设计界面,在代码中寻找按钮,设置监听函数等
- C#通过Semaphore类控制线程队列的方法
- 单用户模式
- SQLyog 导入外部.sql数据库文件 导入没有反应解决
- Memcached之原子性(6)
- myeclipse 编辑器美化
- HYSBZ 1086 王室联邦 (树的分块)
- oracle存储过程常用的技巧(详)
- php接口开发入门(一)--Mac10.10下环境搭建
- 欧拉函数
- 30多条mysql数据库优化方法,千万级数据库记录查询轻松解决
- Android Studio : 修改Debug签名的Key
- android Jvm 笔记。内存溢出。内存区域划分。垃圾回收气
- 【C#】GC和析构函数(Finalize 方法)
- 敏捷软件开发:原则、模式与实践——第4章 测试
- sql 数据库链接代码及使用全解