文件与IO(二)之字符流
来源:互联网 发布:炉石传说mac版2017 编辑:程序博客网 时间:2024/05/17 02:27
字符流
Reader
用于读取字符流的抽象类。
子类必须实现的方法只有read(char[], int, int) 和close()。但是,多数子类将重写此 处定义的一些方法,以提供更高的效率和/或其他功能。
使用FileReader类进行实例化操作。
Writer
写入字符流的抽象类。
子类必须实现的方法仅有write(char[], int, int)、flush() 和close()。但是,多数子类将重写此处定义的一些方法,以提供更高的效率和/或其他功能。
与OutputStream一样,对文件的操作使用:FileWriter类完成
简单写个小例子来说明用法
字符流读入Reader
/** * 如果操作的是文本类型的文件, 我们建议使用字符流 如果是非文本类型的文件,我们建议使用字节流 */ public static void read() { File file = new File("test.txt"); Reader in = null; try { in = new FileReader(file); int len = -1; char[] ch = new char[2]; StringBuffer sb = new StringBuffer(); while ((len = in.read(ch)) != -1) { sb.append(new String(ch, 0, len)); } System.out.println(sb.toString()); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { try { in.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
字符流的写入Writer
/** * 字节输出流,从程序向文件输出数据 */ public static void write() { File file = new File("test.txt"); Writer out = null; try { out = new FileWriter(file, true); String info = "对, 这是你的博客"; out.write(info);//输出到缓存中,最后关闭的时候 out.write("\r\n");//输出换行符 out.flush();//刷新缓存并将文件存入文件中 } catch (IOException e) { e.printStackTrace(); }finally { try { out.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
字节流和字符流的区别
在所有的流操作里。字节永远是基础的。任何基于字节的操作都是正确的。无论你是文本文件还是二进制的文 件。如果确认流里面只有可打印的字符,包括英文的和各种国家的文字,也包括中文,那么可以考虑用字符 流。由于编码不同,多字节的字符可能占用多个字节。比如GBK的汉字就占用2个字节,而UTF‐8的汉字就占 用3个字节。所以,字符流是根据指定的编码,将1个或多个字节转化为java里面的unicode的字符,然后进行 操作。字符操作一般使用Writer,Reader等,字节操作一般都是InputStream, OutputStream 以及各种包装类, 比如BufferedInputStream和BufferedOutputStream等。
总结: 如果你确认你要处理的流是可打印的字符, 那么使用字符流会看上去简单点。如果不确认,那么用字节流总是不会错的。
字节字符转换流
转换流,可以将一个字节流转换为字符流,也可以将一个字符流转换为字节流。
OutputStreamWriter:可以将输出的字符流转换为字节流的输出形式
InputStreamReader : 将输入的字节流转换为字符流输入形式
简单的写个小Demo, 里面的BufferReader方法会在后面阐述
// 处理字符 public static String reader(InputStream in) { BufferedReader reader = new BufferedReader(new InputStreamReader(in)); try { return reader.readLine(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; }
- 文件与IO(二)之字符流
- Java文件与IO(二)之字符流
- IO二:字符流
- java IO (二)字符流与字节流
- IO之字符流
- IO之字符流
- IO之字符流
- java 中IO流总结之二 :字符流总结
- Java基础IO之二字符流缓冲区类
- Java学习笔记之IO流中的文件字符流
- IO基础之文件字节流和文件字符流
- java IO总结之字符流操作文件读写
- 文件与IO(一)之字节流
- 文件与IO(三)之缓冲流
- 文件与IO(四)之其他流
- JAVA IO 之字节流与字符流
- IO之FileWriter读取字符型文件
- Java笔记之io——递归创建与删除多层文件夹,字符流实现文件复制
- 【leetcode】14. Longest Common Prefix
- 一、操作系统原理之1
- Kth Smallest Element in a BST
- c# 数字图像处理的一些方法
- mysql数据库中批量更新
- 文件与IO(二)之字符流
- 一些图像处理的数据集
- Fifth-自动旋转和自动调整大小
- 计算机视觉、机器学习相关领域论文和源代码大集合--持续更新……
- C#编程基础 实验(10) (5)
- MaterialDesign之Dialog
- instr like
- Search in Rotated Sorted Array-旋转数组的查找
- C++ std::bind思考