字节流和字符流操作

来源:互联网 发布:女子网络直播踩兔子 编辑:程序博客网 时间:2024/04/29 17:08

一、关于FileInputStream与FileOutputStream类

 

这是一对继承于InputStream和OutputStream的类,用于本地文件读写(二进制格式读写并且是顺序读写,读和写要分别创建出不同的文件流对象);

本地文件读写编程的基本过程为:

①  生成文件流对象(对文件读操作时应该为FileInputStream类,而文件写应该为FileOutputStream类);

②  调用FileInputStream或FileOutputStream类中的功能函数如read()、write(int b)等)读写文件内容;

③  关闭文件(close())。


流文件的单元是字节,所以它不但可以读写文本文件,也可以读写图片、声音、影像文件,这种特点非常有用,因为我们可以把这种文件变成流,然后在网络上传输。

问题是有了通用的流文件以后,为什么还要专门的字符流呢?这是因为文本可以用不同的方式存储,可以是普通的文本(UTF-8编码方式),ASCII文本和Unicode文本,字符流对象可以进行必要的转换,从而读出正确的文本。

有人认为流文件不能读写文本文件,这其实是个误会,因为文本文件本质上也是由字节组成的,当然是流文件的一种。作为读写文件的全体,这是没问题的,但是,如果要处理每次读入的内容,就最好使用字符流。

所以在文本文件处理时,使用字符流是个最常用的方法。

 

 

1、要将A文件的内容写入B文件,所以我们应该创建一个输入类来读取A文件的内容,然后创建一个输出类将这些内容输出到B文件中。(如下图)

2、用FileOutputStream类向文件中写入一个串字符,然后用FileInputStream读出写入的内容。

import java.io.*; public class FileStream{   public static void main(String[] args) throws Exception {      FileOutputStream out = new FileOutputStream("hello.txt");      out.write("www.sina.com.cn".getBytes ()); //把字符串转化为字节数组并写入到流中      out.close();       byte[] buf = new byte[1024];      File f = new File("hello.txt");      FileInputStream in = new FileInputStream(f);      int len = in.read(buf); //读取内容到字节数组中      System.out.println(new String (buf,0,len)); //String构造函数把字节数组转化为字符串      in.close();   }}


 

 


二、关于FileReader和FileWriter类

 

Reader和Writer是所有字符流类的抽象基类,用于简化对字符串的输入输出编程,即用于读写文本数据。Reader与Writer类及其子类(FileReader和FileWriter类等)主要用于读取文本格式的内容,而InputStream和OutputStream类及它们的子类主要读取二进制格式的内容。

 

1、用FileWriter类向文件中写入一个串字符,然后用FileReader读出写入的内容。

import java.io.*; public class FileStream2{   public static void main(String[] args) throws Excetpion {      FileWriter out = new FileWriter("hello2.txt");      out.write ("www.sina.com.cn "); //在此可以直接写入字符串,不用转化为字节数组       out.close();       char[] buf = new char[1024];  //字符数组      FileReader in = new FileReader("hello2.txt");      int len = in.read(buf);  //此时的read方法可以读取一个字符或几个字符,len代表实际读取到的字符的个数。      System.out.println(new String(buf,0,1024)); //String构造函数把字符数组转化为字符串。      in.close();   }}


 

 


 

 

 

 

 


 

 

 

0 0
原创粉丝点击