字节流:InputStream,OutStream
字符流:Reader,Writer
字符流专门处理用来处理包含文字的文件,可以指定文件的编码方式
字节流可以指定一次传输的大小,常常用来处理图片,视屏等大文件
一般txt的编码方式是ACSII码,比如你写入"12abc",实际存入计算机的是81—82—97—98—99,的二进制
下面以两个例子来阐述字符流和字节流
字符流:
/**
* 字符流方式,拷贝文件
* @author Li Jia Xuan
* @version 1.0
* @since 2012-10-30
* @time 上午10:53:32
*/
public class TestCopy {
/**
*
* @param source
* @param target
*/
public static void copy(String source, String target) {
if (!source.equals("") && !target.equals("")) {
File sourcefile = new File(source);
File targetfile = new File(target);
BufferedReader br = null;
BufferedWriter bw = null;
try {
br = new BufferedReader(new InputStreamReader(
new FileInputStream(sourcefile)));
// bw=new BufferedWriter(new FileWriter(targetfile));
bw = new BufferedWriter(new OutputStreamWriter(
new FileOutputStream(targetfile)));
String line = "";
while ((line = br.readLine()) != null) {
bw.write(line);
}
bw.flush();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
closeIO(br,bw);
}
}
}
/**
* 关闭流,一般采取先开后关、由外向内的原则
* @param br
* @param bw
*/
public static void closeIO(BufferedReader br,BufferedWriter bw){
if (bw != null) {
try {
bw.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if (br != null) {
try {
br.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
字节流:
/**
*利用字节流,实现对视屏音频文件的拷贝
*@author Li Jia Xuan
*@version 1.0
*@since 2012-10-30
*@time 上午11:42:48
*/
public class TestCopy1 {
public static void copy(String source,String target){
InputStream is=null;
OutputStream os=null;
try {
is=new FileInputStream(source);
os=new FileOutputStream(target);
byte[] b=new byte[1024*1024];//1K的读取单位
for(int len=0;(len=is.read(b, 0, b.length))!=-1;){
os.write(b, 0, len);
}
os.flush();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void closeIO(InputStream is,OutputStream os){
if(os!=null){
try {
os.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(is!=null){
try {
is.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
备注:以上包名没有导入
分享到:
相关推荐
Java 流在处理上分为字符流和字节流。字符流处理的单元为 2 个字节的 Unicode 字符,分别操作字符、字符数组或字符串,而字节流处理单元为 1 个字节,操作字节和字节数组。 Java 内用 Unicode 编码存储字符,字符流...
根据处理数据类型的不同,Java I/O流主要分为字节流和字符流两大类。字节流处理的是8位的字节数据,而字符流处理的是16位的Unicode字符。这两种流都有各自的特点和应用场景。 #### 二、字节流 字节流是最基本的数据...
Java的IO体系主要包括两大类:字节流和字符流。本文将详细介绍这两者之间的区别以及如何在实际开发中使用它们。 #### 二、字节流和字符流的概念 ##### 1. 字节流 字节流是处理字节的数据流,它是最基础的数据流...
- **InputStreamReader/OutputStreamWriter**:在字节流和字符流之间起转换作用,可以指定字符编码,如GBK、UTF-8等。 4. **对象流**: - **ObjectInputStream/ObjectOutputStream**:支持序列化,允许程序将对象...
- **InputStreamReader** 和 **OutputStreamWriter**:作为字节流和字符流之间的桥梁,可以将字节流转换为字符流或反之。 ### 字符流与字节流的区别 1. **数据单位**:字节流处理的是字节,字符流处理的是字符。 2...
5. **IO流**:Java IO系统主要分为字节流和字符流两大类。例如,`BufferedWriter`是字符流而不是字节流,`Scanner`类主要用于从标准输入读取数据,提供高效的文本输入功能。 6. **序列化**:序列化是将对象转换为...
Java中的流是处理数据传输的一种抽象,它将数据视为字节序列进行...总的来说,理解Java中的字节流和字符流的区别对于编写高效且健壮的I/O代码至关重要。正确选用流类型可以避免数据丢失、乱码等问题,同时优化性能。
IO流分为两大类:字符流(Character Stream)和字节流(Byte Stream)。这两类流的主要区别在于处理数据的单位不同。 1. 字节流(InputStream/OutputStream) 字节流是最基本的IO流类型,它的处理单位是字节(8位)...
1. 什么是流 ...Java中基本的两个字节流类是InputStream和OutputStream,它们分别代表了组基本的输入字节流和输出字节流。InputStream类与OutputStream类均为抽象类,我们在实际使用中通常使用Java类库中提
Java中的字节流和字符流是IO操作中的两种基本类型,它们主要用于数据的输入和输出。字节流处理的数据单位是字节,而字符流处理的是Unicode字符。 字节流: 字节流主要由两个核心类构成:`InputStream`和`...
字节流和字符流的区别在于处理数据的基本单位不同,字节流以8位的字节为单位,而字符流则以16位的Unicode字符为单位。 字节流分为输入流(InputStream)和输出流(OutputStream),主要用来处理二进制数据,如图像...
转换流:在字节流和字符流之间,Java提供了解决两者不兼容问题的转换流,即InputStreamReader和OutputStreamWriter。InputStreamReader是字节输入流到字符输入流的桥梁,而OutputStreamWriter则是字节输出流到字符...
Java中的流分为两种类型:字符流(Character Stream)和字节流(Byte Stream),它们都是Java I/O系统的基础。字符流处理的是Unicode字符,而字节流则处理单个字节的数据。 字节流是最基础的流,主要包括...
Java IO系统分为两大类:字节流和字符流。字节流主要用于处理任何类型的原始数据,如图片、音频文件或者二进制文件,而字符流则专注于处理基于文本的数据。本文将深入探讨这两类流的原理、用途以及它们之间的关联。 ...
转换流如InputStreamReader和OutputStreamWriter,它们起到了字节流和字符流之间的桥梁作用,可以根据指定的字符编码将字节流转换为字符流,反之亦然。 此外,Java的IO流还提供了一些高级特性,比如**过滤流**。...
除此之外,InputStreamReader和OutputStreamWriter是字节流与字符流之间的桥梁,它们允许我们在字节流和字符流之间转换,以适应不同编码格式的需求。 在Java IO中,还有一套转换流(Wrapper Stream),即...
字符流和字节流是IO流的两种主要类型。字符流主要用于处理基于字符的数据,如文本文件,而字节流则用于处理任何类型的二进制数据。在某些场景下,我们需要将字节流转换为字符流,或者反之,这时就需要用到转换流。本...
在Java IO中,主要有两种流的概念:字符流(Character Stream)和字节流(Byte Stream)。它们是处理数据的基本方式,适用于不同场景。 字符流主要处理基于字符的数据,如文本文件,它包括Reader和Writer两个抽象...
字节流与字符流在java.io包中操作文件内容的主要有两大类:字节流、字符流,两类都分为输入和输出操作。在字节流中输出数据主要是使用OutputStream完成,输入使的是InputStream,在字符流中输出主要是使用Writer类...
6. **文档**:提供的Word文档很可能是对源码的详细解释,包括步骤、注意事项和可能遇到的问题,这有助于理解和学习字节流和字符流的使用。 总的来说,这个压缩包提供了一个很好的学习机会,你可以通过实际运行代码...