当前位置: 首页 > 编程笔记 >

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

谭健柏
2023-03-14
本文向大家介绍Java字符流和字节流对文件操作的区别,包括了Java字符流和字节流对文件操作的区别的使用技巧和注意事项,需要的朋友参考一下

记得当初自己刚开始学习Java的时候,对Java的IO流这一块特别不明白,所以写了这篇随笔希望能对刚开始学习Java的人有所帮助,也方便以后自己查询。Java的IO流分为字符流(Reader,Writer)和字节流(InputStream,OutputStream),字节流顾名思义字节流就是将文件的内容读取到字节数组,然后再输出到另一个文件中。而字符流操作的最小单位则是字符。可以先看一下IO流的概述:

 

下面首先是通过字符流对文件进行读取和写入:

package lib;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;

public class Test {
  // 定义文件路径
  File f = new File("F:\\test.txt");
  //字符流写入的方法
  public String writeInFile() throws IOException{
    String str = "";
    String count = "";
    try {
      // 使用字符流对文件进行读取
      BufferedReader bf = new BufferedReader(new FileReader(f));
      while (true) {
        //读取每一行数据并将其赋值给str
        if ((count = bf.readLine()) != null) {
          str += count;
        } else {
          break;
        }
      }
      // 关闭流
      bf.close();
    } catch (FileNotFoundException e) {
      e.printStackTrace();
    }
    return str;
  }
  //字符流读取的方法
  public void getReader(){
    try {
      //其中true表示在原本文件内容的尾部添加,若不写则表示清空文件后再添加内容
      PrintWriter pw=new PrintWriter(new FileWriter(f,true));
      pw.write("测试输入字符串到文件中2");
      pw.close();
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
  public static void main(String[] args) throws IOException {
    Test test=new Test();
    //将字符串输入到文件中
    test.getReader();
    //读取相对应的字符串
    String str=test.writeInFile();
    //将文件中内容在控制台输出
    System.out.println("文件内容为:"+str);
  }
}

上述代码的关键地方都有注释,就不再一一赘述了,主要就是在使用完流之后不要忘记关闭就好

然后是通过字节流的方式对文件进行操作,将一个文件中的内容复制到另一个文件中:

package com.file.test2;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class TestFile2 {
  //使用字节流读取并写入文件,将一个文件复制到另一个文件中
  public static void main(String[] args) throws IOException {
    //要复制的源文件
    File f=new File("D:\\test.txt");
    //目标文件
    File f2=new File("D:\\test2.txt");
    //定义一个byte类型的数组,用于存储读取到的内容
    byte [] b=new byte[1024];
    int length;
    try {
      //定义读取的流
      FileInputStream in=new FileInputStream(f);
      //定义输出到文件的流
      FileOutputStream out=new FileOutputStream(f2);
      //将文件内容输出到另一个文件中
      while((length=in.read(b))!=-1){
        out.write(b, 0, length);
      }
      out.close();
      in.close();
    } catch (FileNotFoundException e) {
      e.printStackTrace();
    }
  }
}

在字节流的操作中,第13行的源文件必须存在,可以根据需要自行更改文件路径,只需要存在即可,否则会报文件找不到的错误,同时若想在控制台输出读取到的字节流的内容则可以在第27和28行之间加两句代码:in.read(b, 0, b.length);System.out.println(new String(b));

以上就是字符流和字节流的相关操作,其实代码不难,主要是自己的理解,相同的问题每个人都会有不同的理解方式,当然,对于我们编程人员来说,除了要多思考之外还要多动手。最后希望以上内容能对大家有所帮助,也请继续支持本站。

 类似资料:
  • 本文向大家介绍java 字节流和字符流的区别详解,包括了java 字节流和字符流的区别详解的使用技巧和注意事项,需要的朋友参考一下 字节流与和字符流的使用非常相似,两者除了操作代码上的不同之外,是否还有其他的不同呢? 实际上字节流在操作时本身不会用到缓冲区(内存),是文件本身直接操作的,而字符流在操作时使用了缓冲区,通过缓冲区再操作文件,如图所示。 下面以两个写文件的操作为主进行比较,但是在操作时

  • 问题内容: 请解释什么是字节流和字符流。这些到底是什么意思?Microsoft Word文档是面向字节还是面向字符? 谢谢 问题答案: 流是顺序访问文件的一种方式。字节流逐字节访问文件。字节流适用于任何类型的文件,但不适用于文本文件。例如,如果文件使用unicode编码,并且一个字符用两个字节表示,则字节流将分别处理这些字节,您需要自己进行转换。 字符流将逐字符读取文件。必须为字符流提供文件的编码

  • 本文向大家介绍详解JAVA 字节流和字符流,包括了详解JAVA 字节流和字符流的使用技巧和注意事项,需要的朋友参考一下 1、InputStream 和 Reader InputStream 和 Reader 是所有输入流的抽象基类,本身并不能创建实例来执行输入,但它们将成为所有输入流的模板,所以它们的方法是所有输入流都可使用的方法。 在 InputStream 里包含如下三个方法。 int rea

  • 本文向大家介绍详解Java中字符流与字节流的区别,包括了详解Java中字符流与字节流的区别的使用技巧和注意事项,需要的朋友参考一下 本文为大家分析了Java中字符流与字节流的区别,供大家参考,具体内容如下 1. 什么是流     Java中的流是对字节序列的抽象,我们可以想象有一个水管,只不过现在流动在水管中的不再是水,而是字节序列。和水流一样,Java中的流也具有一个“流动的方向”,通常可以从中

  • 字节流与字符流主要的区别是他们的的处理方式字节流是最基本的,采用ASCII编码,所有的InputStream和OutputStream的子类都是,主要用在处理二进制数据,它是按字节来处理的但实际中很多的数据是文本,又提出了字符流的概念,采用Unicode编码.它是按虚拟机的encode来处理

  • 本文向大家介绍Java字符流与字节流区别与用法分析,包括了Java字符流与字节流区别与用法分析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Java字符流与字节流区别与用法。分享给大家供大家参考,具体如下: 字节流与字符流主要的区别是他们的的处理方式 流分类: 1.Java的字节流 InputStream是所有字节输入流的祖先,而OutputStream是所有字节输出流的祖先。 2.Ja