字符流和字节流常用类,及其之间的数据交换实现
2016-11-04 20:49
399 查看
字节输入流:
字符输入流:
[为了达到最高效率,可要考虑在 BufferedReader 内包装 InputStreamReader。]
例如:
读写道理同样,下面是一个将一个文件夹中的文件复制到另一个文件夹的函数
InputStream (抽象类,字节输入流的所有类的超类)---读取原始字节流, 请考虑使用FileInputStream (1) |__FileInputStream 描述:从文件系统中的某个文件中获得输入字节,用于读取 诸如图像数据之类的原始字节流。要读取字符流,请考虑使用 FileReader。 >FileInputStream(File file) 通过打开一个到实际文件的连接来创建一个 FileInputStream, 该文件通过文件系统中的 File 对象 file 指定。 >FileInputStream(FileDescriptor fdObj) 通过使用文件描述符 fdObj 创建一个 FileInputStream, 该文件描述符表示到文件系统中某个实际文件的现有连接。(不常用) >FileInputStream(String name) 通过打开一个到实际文件的连接来创建一个 FileInputStream, 该文件通过文件系统中的路径名 name 指定。 (2) |__BufferedInputStream 描述:在输入流上添加一些功能,即缓冲输入以及支持 mark 和 reset 方法的能力。 >BufferedInputStream(InputStream in) 通过in来引入输入流 >BufferedInputStream(InputStream in, int size) 创建具有指定缓冲区大小的 BufferedInputStream 并保存其参数,即输入流 in,以便将来使用。(不写时默认8192)
↓ |-----------------------------------------------------------------| 字节流和字符流之间数据交换的桥梁:InputStreamReader(InputStream in) |-----------------------------------------------------------------| ↑
字符输入流:
Reader(抽象类,用于读取字符流的抽象类) (1) |__BufferedReader 描述:从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。 >BufferedReader(Reader in) 创建一个使用默认大小输入缓冲区的缓冲字符输入流。 >BufferedReader(Reader in, int sz) 创建一个使用指定大小输入缓冲区的缓冲字符输入流。 (2) |__InputStreamReader 描述:是字节流通向字符流的桥梁 >InputStreamReader(InputStream in) 创建一个使用默认字符集的 InputStreamReader。 >InputStreamReader(InputStream in, Charset cs) 创建使用给定字符集的 InputStreamReader。 >InputStreamReader(InputStream in, CharsetDecoder dec) 创建使用给定字符集解码器的 InputStreamReader。 >InputStreamReader(InputStream in, String charsetName) 创建使用指定字符集的 InputStreamReader。 (2)[1]|__FileReader 描述:用来读取字符文件的便捷类 >FileReader(File file) 在给定从中读取数据的 File 的情况下创建一个新 FileReader。 >FileReader(FileDescriptor fd) 在给定从中读取数据的 FileDescriptor 的情况下创建一个新FileReader。 >FileReader(String fileName) 在给定从中读取数据的文件名的情况下创建一个新 FileReader
[为了达到最高效率,可要考虑在 BufferedReader 内包装 InputStreamReader。]
例如:
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
读写道理同样,下面是一个将一个文件夹中的文件复制到另一个文件夹的函数
private static void copyfiles(File srcPath, File destPath) throws IOException { File[] files = srcPath.listFiles(); for(File file: files){ BufferedInputStream fr = new BufferedInputStream(new FileInputStream(file)); File dest = new File(destPath,file.getName()); BufferedOutputStream fw = new BufferedOutputStream(new FileOutputStream(dest)); byte[] b = new byte[1024]; int ch = -1; while((ch = fr.read(b))!=-1){ fw.write(b,0,ch); } System.out.println(">>"+file.getName()+"---------复制成功!"); fr.close(); fw.close(); } }
相关文章推荐
- 用VC++6.0实现PC机与单片机之间的数据交换
- 用VC++6.0实现PC机与单片机之间的数据交换
- 如何实现台达触摸屏与台达PLC之间的远距离无线数据交换?
- 【java基础】在Java中实现基本数据类型与字符、字符串之间的转换
- 用Ole Automation实现Delphi和AutoCad之间的数据交换
- 安卓使用aidl实现两个程序之间的数据交换
- 怎样在Java中实现基本数据类型与字符之间的转换
- 异构数据库之间实现数据交换(通过咏南中间件)
- 字符数据在内存中的存储形式及其使用方法(C实现)
- 用VC++6.0实现PC机与单片机之间的数据交换
- 第十一课:启动、关闭 Activity 及其之间的数据交换
- 在 ajax 应用程序中实现数据之间交换
- 不用临时变量 实现两个变量之间的数据交换
- 单臂路由器实现不同vlan之间的数据交换
- 实现不同域(Domain)之间的数据交换
- 用共享目录方式实现Windows与Linux虚拟机之间的数据交换
- 使用jQuery中 select option:selected 实现2个下拉框之间数据的交换
- 如何实现台达触摸屏与台达PLC之间的远距离无线数据交换?
- 如何在Lua与C/C++之间实现table数据的交换
- 黑马程序员-Condition条件对象、Semaphore、CyclicBarrier、倒计时门栓 CountDownLatch、Exchanger(实现两个线程之间数据交换