李成笔记网

专注域名、站长SEO知识分享与实战技巧

5分钟课堂:Java 字节流与字符流 十分钟学会java循环语句

在Java的I/O流按流内容分为两大类,字符流(Character Streams)和字节流(Byte Streams)。

字符流和字节流处理数据输入输出的两种基本方式,分别应用于字符内容和二进制字节内容的读写。

字节流(Byte Streams)

字节流是直接读写字节的流,由抽象类InputStream和OutputStream描述其读写方法,创建对象时需要使用它们的子类,如二进制文件的读写类FileInputStream和FileOutputStream。

字节流因为直接处理字节数据,一般用于读写二进制数据(如图片、音频、视频等),但是也适合用于所有数据类型。

对于文本内容,字节流不直接支持Unicode编码,对文本文件处理时可能需要额外的编码转换逻辑。

字符流(Character Streams)

字符流读写字符数据,用于处理文本内容。由抽象类Reader和Writer描述其读写方法,创建对象时需要使用它们的子类,如文本文件的读写类FileReader和FileWriter。

字符流内部实现了字符编码和解码,直接支持Unicode,在处理文本文件时更为方便。

字符流因为自动处理字符编码转换,在读写文本时代码更简洁。

复制文本文件实例

使用字节流,按字节复制文件内容。

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class ByteStreamCopyExample {
   public static void main(String[] args) {
    String sourceFile = "source.txt";
    String targetFile = "target.txt";
    try (FileInputStream fis = new FileInputStream(sourceFile);
      FileOutputStream fos = new FileOutputStream(targetFile)) {
      int byteRead;
      while ((byteRead = fis.read()) != -1) {
      	fos.write(byteRead);
      }
      System.out.println("文件复制完成(字节流)。");
    } catch (IOException e) {
    	e.printStackTrace();
    }
  }
}

使用字符流,按字符复制文本文件

import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class CharacterStreamCopyExample {
  public static void main(String[] args) {
    String sourceFile = "source.txt";
    String targetFile = "target.txt";
    try ( FileReader fr = new FileReader(sourceFile);
            FileWriter fw = new FileWriter(targetFile)) {
      int charRead;
      while ((charRead = fr.read()) != -1) {
      	fw.write(charRead);
      }
      System.out.println("文件复制完成(字符流)。");
    } catch (IOException e) {
   	 e.printStackTrace();
    }
  }
}

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言