Java IO 字节流与字符流 (五)
Java的IO流分为字符流(Reader,Writer)和字节流(InputStream,OutputStream),字节流顾名思义字节流就是将文件的内容读取到字节数组,然后再输出到另一个文件中。而字符流操作的最小单位则是字符。可以先看一下IO流的概述:
下面首先是通过字符流对文件进行读取和写入:

- 1 package lib;
- 2
- 3 import java.io.BufferedReader;
- 4 import java.io.File;
- 5 import java.io.FileNotFoundException;
- 6 import java.io.FileReader;
- 7 import java.io.FileWriter;
- 8 import java.io.IOException;
- 9 import java.io.PrintWriter;
- 10
- 11 public class Test {
- 12 // 定义文件路径
- 13 File f = new File("F:\\test.txt");
- 14 //字符流写入的方法
- 15 public String writeInFile() throws IOException{
- 16 String str = "";
- 17 String count = "";
- 18 try {
- 19 // 使用字符流对文件进行读取
- 20 BufferedReader bf = new BufferedReader(new FileReader(f));
- 21 while (true) {
- 22 //读取每一行数据并将其赋值给str
- 23 if ((count = bf.readLine()) != null) {
- 24 str += count;
- 25 } else {
- 26 break;
- 27 }
- 28 }
- 29 // 关闭流
- 30 bf.close();
- 31 } catch (FileNotFoundException e) {
- 32 e.printStackTrace();
- 33 }
- 34 return str;
- 35 }
- 36 //字符流读取的方法
- 37 public void getReader(){
- 38 try {
- 39 //其中true表示在原本文件内容的尾部添加,若不写则表示清空文件后再添加内容
- 40 PrintWriter pw=new PrintWriter(new FileWriter(f,true));
- 41 pw.write("测试输入字符串到文件中2");
- 42 pw.close();
- 43 } catch (IOException e) {
- 44 e.printStackTrace();
- 45 }
- 46 }
- 47 public static void main(String[] args) throws IOException {
- 48 Test test=new Test();
- 49 //将字符串输入到文件中
- 50 test.getReader();
- 51 //读取相对应的字符串
- 52 String str=test.writeInFile();
- 53 //将文件中内容在控制台输出
- 54 System.out.println("文件内容为:"+str);
- 55 }
- 56 }

上述代码的关键地方都有注释,就不再一一赘述了,主要就是在使用完流之后不要忘记关闭就好(行30,行42)
然后是通过字节流的方式对文件进行操作,将一个文件中的内容复制到另一个文件中:

- 1 package com.file.test2;
- 2
- 3 import java.io.File;
- 4 import java.io.FileInputStream;
- 5 import java.io.FileNotFoundException;
- 6 import java.io.FileOutputStream;
- 7 import java.io.IOException;
- 8
- 9 public class TestFile2 {
- 10 //使用字节流读取并写入文件,将一个文件复制到另一个文件中
- 11 public static void main(String[] args) throws IOException {
- 12 //要复制的源文件
- 13 File f=new File("D:\\test.txt");
- 14 //目标文件
- 15 File f2=new File("D:\\test2.txt");
- 16 //定义一个byte类型的数组,用于存储读取到的内容
- 17 byte [] b=new byte[1024];
- 18 int length;
- 19 try {
- 20 //定义读取的流
- 21 FileInputStream in=new FileInputStream(f);
- 22 //定义输出到文件的流
- 23 FileOutputStream out=new FileOutputStream(f2);
- 24 //将文件内容输出到另一个文件中
- 25 while((length=in.read(b))!=-1){
- 26 out.write(b, 0, length);
- 27 }
- 28 out.close();
- 29 in.close();
- 30 } catch (FileNotFoundException e) {
- 31 e.printStackTrace();
- 32 }
- 33 }
- 34 }

在字节流的操作中,第13行的源文件必须存在,可以根据需要自行更改文件路径,只需要存在即可,否则会报文件找不到的错误,同时若想在控制台输出读取到的字节流的内容则可以在第27和28行之间加两句代码:in.read(b, 0, b.length);System.out.println(new String(b));
以上就是字符流和字节流的相关操作,其实代码不难,主要是自己的理解,相同的问题每个人都会有不同的理解方式,当然,对于我们编程人员来说,除了要多思考之外还要多动手。最后希望以上内容能对大家有所帮助
Java IO 字节流与字符流 (五)的更多相关文章
- JAVA IO 字节流与字符流
文章出自:听云博客 题主将以三个章节的篇幅来讲解JAVA IO的内容 . 第一节JAVA IO包的框架体系和源码分析,第二节,序列化反序列化和IO的设计模块,第三节异步IO. 本文是第一节. ...
- Java IO 字节流与字符流 (三)
概述 IO流用来处理设备之间的数据传输 Java对数据的操作时通过流的方式 Java用于操作流的对象都在IO包中 流按操作的数据分为:字节流和字符流 流按流向不同分为:输入流和输出流 IO流常用基类 ...
- Java IO 字节流与字符流 (二)
1. 什么是流 Java中的流是对字节序列的抽象,我们可以想象有一个水管,只不过现在流动在水管中的不再是水,而是字节序列.和水流一样,Java中的流也具有一个“流动的方向”,通常可以从中读入一个字节序 ...
- Java的字节流,字符流和缓冲流对比探究
目录 一.前言 二.字节操作和字符操作 三.两种方式的效率测试 3.1 测试代码 3.2 测试结果 3.3 结果分析 四.字节顺序endian 五.综合对比 六.总结 一.前言 所谓IO,也就是Inp ...
- java中字节流与字符流的区别
字节流 在I/O类库中,java.io.InputStream和java.io.OutputStream分别表示字节输入流和字节输出流,它们都是抽象类,不能实例化,数据流中的最小单位是字节,所以叫做字 ...
- Java中字节流和字符流的比较(转)
字节流与和字符流的使用非常相似,两者除了操作代码上的不同之外,是否还有其他的不同呢? 实际上字节流在操作时本身不会用到缓冲区(内存),是文件本身直接操作的,而字符流在操作时使用了缓冲区,通过缓冲区再操 ...
- java中字节流和字符流的区别
流分类: 1.Java的字节流 InputStream是所有字节输入流的祖先,而OutputStream是所有字节输出流的祖先.2.Java的字符流 Reader是所有读取字符串输入流的祖先,而 ...
- java IO(三):字符流
*/ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hl ...
- Java中字节流和字符流复制文件
字节流和字符流复制文件的过程: 1.建立两个流对象 绑定数据源和目的地 2.遍历出需复制的文件写入复制过后的新文件中(只不过是遍历的时候是区分字节和字符的) 3.访问结束后关闭资源 字节流复制文件: ...
随机推荐
- jsp include html 乱码问题解决
方法一: 在被包含的html中,在首行加上 <%@ page language="java" import="java.util.*" pageEncod ...
- python实现tcp文件下载器
服务器端代码 import socket import os import threading # 处理客户端请求下载文件的操作(从主线程提出来的代码) def deal_client_request ...
- Why Countries Succeed and Fail Economically
Countries Succeed and Fail Economically(第一部分)" title="Why Countries Succeed and Fail Econo ...
- A - 栈
Description You are given a string consisting of parentheses () and []. A string of this type is s ...
- IDEA-基本设置
目录: 1.设置内存 2.设置编码格式 3.设置换行符 4.设置新建Class文档说明 5.添加自定义注释 6.设置自己的maven 工欲善其事,必先利其器,设置好基础的设置才能事半功倍!少踩坑!以下 ...
- BNUOJ 26223 CosmoCraft
CosmoCraft Time Limit: 1000ms Memory Limit: 32768KB This problem will be judged on HDU. Original ID: ...
- Git Cheat Sheet 中文版
Git Cheat Sheet 中文版 索引 配置 配置文件 创建 本地修改 搜索 提交历史 分支与标签 更新与发布 合并与重置 撤销 Git Flow 配置 列出当前配置: $ git config ...
- hdu - 1104 Remainder (bfs + 数论)
http://acm.hdu.edu.cn/showproblem.php?pid=1104 注意这里定义的取模运算和计算机的%是不一样的,这里的取模只会得到非负数. 而%可以得到正数和负数. 所以需 ...
- 【编程大系】Java资源汇总
1.学习资料: 1)Spring Boot 那些事:https://www.w3cschool.cn/springboot/ 对应的 gitHub代码: https://github.com/Jeff ...
- 谈谈hibernate的缓存
一,hibernate是什么技术? 1 hibernate是一个orm 就是对象关系映射框架. 及我们创建的实体类对象与数据库表中的数据是一一对应的关系. 我们可以改变对象信息从而改变数据库中的 ...