html5中文学习网

您的位置: 首页 > 网络编程 > java教程 » 正文

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

[ ] 已经帮助:人解决问题

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

 vMeHTML5中文学习网 - HTML5先行者学习网

下面首先是通过字符流对文件进行读取和写入:vMeHTML5中文学习网 - HTML5先行者学习网
vMeHTML5中文学习网 - HTML5先行者学习网

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

上述代码的关键地方都有注释,就不再一一赘述了,主要就是在使用完流之后不要忘记关闭就好vMeHTML5中文学习网 - HTML5先行者学习网

然后是通过字节流的方式对文件进行操作,将一个文件中的内容复制到另一个文件中:vMeHTML5中文学习网 - HTML5先行者学习网
vMeHTML5中文学习网 - HTML5先行者学习网

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));vMeHTML5中文学习网 - HTML5先行者学习网

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

(责任编辑:)
推荐书籍
推荐资讯
关于HTML5先行者 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 人才招聘 - 帮助