Java——文件操作字符流和字节流的区别

转:http://blog.csdn.net/joephoenix/articles/2283165.aspx

java的IO流分两种流

字节流 InputStream OutputStream

字符流 Reader Writer

他们都是抽象类

具体实现 
字节流 FileInputStream FileOutputStream 
字符流 FileReader FileWriter

字符流处理的单元为2个字节的Unicode字符,分别操作字符、字符数组或字符串,而字节流处理单元为1个字节,操作字节和字节数组。所以字符流是由Java虚拟机将字节转化为2个字节的Unicode字符为单位的字符而成的,所以它对多国语言支持性比较好!如果是音频文件、图片、歌曲,就用字节流好点,如果是关系到中文(文本)的,用字符流好点.
     所有文件的储存是都是字节(byte)的储存,在磁盘上保留的并不是文件的字符而是先把字符编码成字节,再储存这些字节到磁盘。在读取文件(特别是文本文件)时,也是一个字节一个字节地读取以形成字节序列.
      字节流可用于任何类型的对象,包括二进制对象,而字符流只能处理字符或者字符串; 2. 字节流提供了处理任何类型的IO操作的功能,但它不能直接处理Unicode字符,而字符流就可以。

字节流转换成字符流可以用 InputSteamReader OutputStreamWriter

转换成BufferdReader BufferedWriter 他们具有缓冲区

例如:读取文件 从字节流输入到字符流输入 
定义一个字节流:

// 定义一个指向D:/TEXT.TXT 的字节流
FileInputStream fileInputStream = new FileInputStream("d:/text.txt");

//字节流转换成InputStreamReader 
InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream);

//InputStreamReader 转换成带缓存的bufferedReader 
BufferedReader bufferedReader = new BufferedReader(inputSteamReader);

可以把读出来的内容赋值给字符

String ss = new String(); 
String s; 
while((s = bufferedReader.readLine())!=null){ 
ss += s; 
}

例如:写入文件 从字节流输出到字符流输出

FileOutputStream fileOutputStream = new FileOutputStream("d:/text.txt"); //定义一个指向D:/TEXT.TXT文件

OutputStreamWriter outputStreamWriter = new OutputStreamWriter(fileOutputStream);

BufferedWriter bufferedWriter = new BufferedWriter(outputStreamWriter);

bufferedWriter.write(s);

bufferedWriter.close(); 
outputStreamWriter.close(); 
fileOutputStream.close();

时间: 2024-11-05 11:37:00

Java——文件操作字符流和字节流的区别的相关文章

理解Java中字符流与字节流的区别

1. 什么是流 Java中的流是对字节序列的抽象,我们可以想象有一个水管,只不过现在流动在水管中的不再是水,而是字节序列.和水流一样,Java中的流也具有一个“流动的方向”,通常可以从中读入一个字节序列的对象被称为输入流:能够向其写入一个字节序列的对象被称为输出流. 2. 字节流 Java中的字节流处理的最基本单位为单个字节,它通常用来处理二进制数据.Java中最基本的两个字节流类是InputStream和OutputStream,它们分别代表了组基本的输入字节流和输出字节流.InputStre

Java中字符流与字节流的区别

字符流处理的单元为2个字节的Unicode字符,分别操作字符.字符数组或字符串,而字节流处理单元为1个字节,操作字节和字节数组.所以字符流是由Java虚拟机将字节转化为2个字节的Unicode字符为单位的字符而成的,所以它对多国语言支持性比较好!如果是音频文件.图片.歌曲,就用字节流好点,如果是关系到中文(文本)的,用字符流好点. 所有文件的储存是都是字节(byte)的储存,在磁盘上保留的并不是文件的字符而是先把字符编码成字节,再储存这些字节到磁盘.在读取文件(特别是文本文件)时,也是一个字节一

JAVA 字符流与字节流的区别

Java 流在处理上分为字符流和字节流.字符流处理的单元为 2 个字节的 Unicode 字符,分别操作字符.字符数组或字符串,而字节流处理单元为 1 个字节,操作字节和字节数组. Java 内用 Unicode 编码存储字符,字符流处理类负责将外部的其他编码的字符流和 java 内 Unicode 字符流之间的转换.而类 InputStreamReader 和 OutputStreamWriter 处理字符流和字节流的转换.字符流(一次可以处理一个缓冲区)一次操作比字节流(一次一个字节)效率高

java学习之字符流与字节流的转换

1 package com.io; 2 3 import java.io.File; 4 import java.io.FileInputStream; 5 import java.io.FileNotFoundException; 6 import java.io.IOException; 7 import java.io.InputStream; 8 import java.io.InputStreamReader; 9 /** 10 * 字节流转为字符流读入 11 * @author ga

字符流和字节流的区别

字符流:用于处理文字和字符的 流.操作完成后不关闭流,数据无法传递. 字节流:文字以外的都可以用.操作完成后不需关闭流,也可以传递数据. 字符流有缓冲区,将数据接受于缓冲区,达到区的极限(通过手动 1.colse 2.flush)就会进入文件中,打开文件次数少. 字节流:每传一次数据就会打开一次文件,打开数据次数多.占用内存. 缓冲流只在文件输出数据时存在. 原文地址:https://www.cnblogs.com/wlm-boke/p/8516046.html

Java IO6:字符流进阶及BufferWriter、BufferReader

字符流和字节流的区别 拿一下上一篇文章的例子: 1 public static void main(String[] args) throws Exception 2 { 3 File file = new File("D:/writer.txt"); 4 Writer out = new FileWriter(file); 5 // 声明一个String类型对象 6 String str = "Hello World!!!"; 7 out.write(str);

Java IO6:字符流进阶及BufferedWriter、BufferedReader

原文:http://www.cnblogs.com/xrq730/p/4890052.html 字符流和字节流的区别 public static void main(String[] args) throws Exception{ File file = new File("D:/writer.txt"); Writer out = new FileWriter(file); // 声明一个String类型对象 String str = "Hello World!!!&quo

Java IO4:字符流进阶及BufferedWriter、BufferedReader

字符流和字节流的区别 拿一下上一篇文章的例子: 1 public static void main(String[] args) throws Exception 2 { 3 File file = new File("D:/writer.txt"); 4 Writer out = new FileWriter(file); 5 // 声明一个String类型对象 6 String str = "Hello World!!!"; 7 out.write(str);

Java IO之字符流

1.         字符流 在程序中一个字符等于两个字节,Java为我们提供了Reader和Writer两个专门操作字符流的类 1)        字符输出流:Writer Writer是一个字符流,它是一个抽象类,所以要使用它,也必须通过其子类来实例化它后才能使用它. Writer类的常用方法 方法名称 描述 public abstract void close() throws IOException 关闭输出流 public void write(String str) throws I