`

字符流和字节流

    博客分类:
  • java
阅读更多

字节流: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字符流与字节流区别

    Java 流在处理上分为字符流和字节流。字符流处理的单元为 2 个字节的 Unicode 字符,分别操作字符、字符数组或字符串,而字节流处理单元为 1 个字节,操作字节和字节数组。 Java 内用 Unicode 编码存储字符,字符流...

    Java字符流和字节流

    根据处理数据类型的不同,Java I/O流主要分为字节流和字符流两大类。字节流处理的是8位的字节数据,而字符流处理的是16位的Unicode字符。这两种流都有各自的特点和应用场景。 #### 二、字节流 字节流是最基本的数据...

    Java IO字符流和字节流

    Java的IO体系主要包括两大类:字节流和字符流。本文将详细介绍这两者之间的区别以及如何在实际开发中使用它们。 #### 二、字节流和字符流的概念 ##### 1. 字节流 字节流是处理字节的数据流,它是最基础的数据流...

    io流详解,字符流和字节流代码

    - **InputStreamReader/OutputStreamWriter**:在字节流和字符流之间起转换作用,可以指定字符编码,如GBK、UTF-8等。 4. **对象流**: - **ObjectInputStream/ObjectOutputStream**:支持序列化,允许程序将对象...

    JAVA 字符流与字节流

    - **InputStreamReader** 和 **OutputStreamWriter**:作为字节流和字符流之间的桥梁,可以将字节流转换为字符流或反之。 ### 字符流与字节流的区别 1. **数据单位**:字节流处理的是字节,字符流处理的是字符。 2...

    重载重写、接口、抽象类、String指针和字符串拼接、异常catch、throw、throws、字符流和字节流

    5. **IO流**:Java IO系统主要分为字节流和字符流两大类。例如,`BufferedWriter`是字符流而不是字节流,`Scanner`类主要用于从标准输入读取数据,提供高效的文本输入功能。 6. **序列化**:序列化是将对象转换为...

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

    Java中的流是处理数据传输的一种抽象,它将数据视为字节序列进行...总的来说,理解Java中的字节流和字符流的区别对于编写高效且健壮的I/O代码至关重要。正确选用流类型可以避免数据丢失、乱码等问题,同时优化性能。

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

    IO流分为两大类:字符流(Character Stream)和字节流(Byte Stream)。这两类流的主要区别在于处理数据的单位不同。 1. 字节流(InputStream/OutputStream) 字节流是最基本的IO流类型,它的处理单位是字节(8位)...

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

    1. 什么是流 ...Java中基本的两个字节流类是InputStream和OutputStream,它们分别代表了组基本的输入字节流和输出字节流。InputStream类与OutputStream类均为抽象类,我们在实际使用中通常使用Java类库中提

    java字节流和字符流

    Java中的字节流和字符流是IO操作中的两种基本类型,它们主要用于数据的输入和输出。字节流处理的数据单位是字节,而字符流处理的是Unicode字符。 字节流: 字节流主要由两个核心类构成:`InputStream`和`...

    字节流字符流

    字节流和字符流的区别在于处理数据的基本单位不同,字节流以8位的字节为单位,而字符流则以16位的Unicode字符为单位。 字节流分为输入流(InputStream)和输出流(OutputStream),主要用来处理二进制数据,如图像...

    java字节流和字符流[整理].pdf

    转换流:在字节流和字符流之间,Java提供了解决两者不兼容问题的转换流,即InputStreamReader和OutputStreamWriter。InputStreamReader是字节输入流到字符输入流的桥梁,而OutputStreamWriter则是字节输出流到字符...

    Java字符流与字节流区别与用法分析

    Java中的流分为两种类型:字符流(Character Stream)和字节流(Byte Stream),它们都是Java I/O系统的基础。字符流处理的是Unicode字符,而字节流则处理单个字节的数据。 字节流是最基础的流,主要包括...

    Java IO 字节流 字符流

    Java IO系统分为两大类:字节流和字符流。字节流主要用于处理任何类型的原始数据,如图片、音频文件或者二进制文件,而字符流则专注于处理基于文本的数据。本文将深入探讨这两类流的原理、用途以及它们之间的关联。 ...

    IO流学习(字节流 字符流 文本流)!

    转换流如InputStreamReader和OutputStreamWriter,它们起到了字节流和字符流之间的桥梁作用,可以根据指定的字符编码将字节流转换为字符流,反之亦然。 此外,Java的IO流还提供了一些高级特性,比如**过滤流**。...

    字节流字符流练习

    除此之外,InputStreamReader和OutputStreamWriter是字节流与字符流之间的桥梁,它们允许我们在字节流和字符流之间转换,以适应不同编码格式的需求。 在Java IO中,还有一套转换流(Wrapper Stream),即...

    字符流缓冲流等1

    字符流和字节流是IO流的两种主要类型。字符流主要用于处理基于字符的数据,如文本文件,而字节流则用于处理任何类型的二进制数据。在某些场景下,我们需要将字节流转换为字符流,或者反之,这时就需要用到转换流。本...

    IO各种操作文件,字符流、字节流等

    在Java IO中,主要有两种流的概念:字符流(Character Stream)和字节流(Byte Stream)。它们是处理数据的基本方式,适用于不同场景。 字符流主要处理基于字符的数据,如文本文件,它包括Reader和Writer两个抽象...

    字节流和字符流

    字节流与字符流在java.io包中操作文件内容的主要有两大类:字节流、字符流,两类都分为输入和输出操作。在字节流中输出数据主要是使用OutputStream完成,输入使的是InputStream,在字符流中输出主要是使用Writer类...

    字节流字符流的使用方法源码+文档

    6. **文档**:提供的Word文档很可能是对源码的详细解释,包括步骤、注意事项和可能遇到的问题,这有助于理解和学习字节流和字符流的使用。 总的来说,这个压缩包提供了一个很好的学习机会,你可以通过实际运行代码...

Global site tag (gtag.js) - Google Analytics