软件编程
位置:首页>> 软件编程>> java编程>> Java字符流和字节流对文件操作的区别

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

作者:Dreamlove  发布时间:2022-06-08 10:32:01 

标签:java,字节流,字符流

记得当初自己刚开始学习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));

0
投稿

猜你喜欢

  • 若一个实例方法声明前带有virtual关键字,那么这个方法就是虚方法。虚方法与非虚方法的最大不同是,虚方法的实现可以由派生类所取代,这种取代
  • 创建我们来看看,使用Arrays 怎么创建一个新的数组,一般来说,我们可以使用Arrays 的 copyOf , copyOfRange 和
  • InputStream转化为base64项目经常会用到将文件转化为base64进行传输怎么才能将文件流转化为base64呢,代码如下/**
  • 本文实例讲述了Struts2+Hibernate实现数据分页的方法。分享给大家供大家参考,具体如下:1.用Hibernate实现分页技术:/
  • Android应用中能很方便的完成这些功能,很多的应用中都有“分享”功能?如何分享呢?下面给大家说说看。最近有人问到Android分享功能用
  • 线程池中ThreadGroup的坑在Java中每一个线程都归属于某个线程组管理的一员,例如在主函数main()主工作流程中产生一个线程,则产
  • 一、前言1、简单的登录验证可以通过Session或者Cookie实现。2、每次登录的时候都要进数据库校验下账户名和密码,只是加了cookie
  • 什么是粘包/拆包       一般所谓的TCP粘包是在一次接收数据不能完全地体现
  • 首先介绍一些乐观锁与悲观锁:悲观锁:总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个
  • 本文描述了TCP协议,首先简单介绍了TCP完成了一些什么功能;介绍了TCP报文格式,以及典型报文的数据格式;接着从链路控制和数据传输两个方面
  • 每次看IOS上的应用,应用中状态栏的颜色总能与应用标题栏颜色保持一致,用户体验很不错,对于这种效果,像我这种好奇心强的人就会去看看那安卓是否
  • 1.前置准备默认服务器上的hadoop服务已经启动本地如果是windows环境,需要本地配置下hadoop的环境变量本地配置hadoop的环
  • 本文实例为大家分享了Android滑动组件悬浮固定在顶部效果的具体代码,供大家参考,具体内容如下要想实现的效果是如下:场景:有些时候是内容中
  • 配置AOPAOP简介要介绍面向切面变成(Aspect-Oriented Programming,AOP),需要先考虑一个这样的场景:公司有一
  • 1、前言  最近做项目需要用到监测网速及流量,我经过百度和墙内谷歌都没能快速发现监测IPV6流量和网速的用例;也经过自己的一番查询和调试,浪
  • persistence.xml配置文件修改存放路径今天整合Spring、struts2和Spring Data JPA的时候遇到以下问题,现
  • 0x00:文件介绍在 WEB 工程中,对于 MyBatis 最核心的全局配置文件是 SqlMapConfig.xml 文件,其中包含了数据库
  • 第1部分 TreeSet介绍TreeSet简介TreeSet 是一个有序的集合,它的作用是提供有序的Set集合。它继承于AbstractSe
  • /*同步函数当函数中的代码全部放在了同步代码块中,那么这个函数就是同步函数*///同步函数的锁是this锁,this是一个引用,this指向
  • 本文实例为大家分享了Android实现加载对话框的具体代码,供大家参考,具体内容如下这里简单说一下两种实现加载对话框的方式:1.使用动画让一
手机版 软件编程 asp之家 www.aspxhome.com