欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2024-03-12 08:25:56
记得当初自己刚开始学习java的时候,对java的io流这一块特别不明白,所以写了这篇随笔希望能对刚开始学习java的人有所帮助,也方便以后自己查询。java的io流分为字...

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

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

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

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));

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