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.访问结束后关闭资源 字节流复制文件: ...
随机推荐
- random,json,pickle,hashlib,shutil,hmac,shelve 模块
一,复习 ''' 项目开发规范 ATM -- bin: 可执行文件 # run.py import os import sys BASE_DIR = os.path.dirname(os.path.d ...
- 拥抱变革(More Fearless Change)
今天从大敏捷群中了解到Tid2017的一个讲演,一位敏捷教练,组织变革的专著的作者Linda的讲演. <More Fearless Change-Strategy for Making Your ...
- PLSQLDeveloper安装与配置(详细图文)
PLSQLDeveloper安装与配置(详细图文) 听语音 | 浏览:21912 | 更新:2016-10-24 17:12 1 2 3 4 5 6 7 分步阅读 在公司做项目时需要使用PLSQL D ...
- 添物不花钱学JavaEE(基础篇) --HTML
HTML是什么? HTML – Hyper Text Markup Language HTML官方网址 http://www.w3.org/TR/2014/REC-html5-20141028/ 其实 ...
- Mvc系统学习9——Areas学习
在Mvc2.0中,新增加了一个特性就是Areas.在没有有使用Areas的情况下,我们的Mvc项目组织是下面这样的.当项目庞大的时候,Controllers,Model,View文件下下面势必会有很多 ...
- [luoguP1472] 奶牛家谱 Cow Pedigrees(DP)
传送门 一个深度为i的树可以由一个根节点外加两个深度为i-1的树组成,这就决定了DP该怎么写. 然而我真的没有想到. f[i][j]表示深度为i节点数为j的个数 sum[i][j]表示深度小于等于i节 ...
- [luoguP1896] [SCOI2005]互不侵犯King(状压DP)
传送门 先预处理出来一行中放置国王的所有情况和每种情况所用的国王个数. f[i][j][k]表示前i行放j个国王且最后一行的状态为k的方案数 状压DP即可 #include <cstdio> ...
- [luoguP1962] 斐波那契数列(矩阵快速幂)
传送门 解析详见julao博客连接 http://worldframe.top/2017/05/10/清单-数学方法-——-矩阵/ ——代码 #include <cstdio> #incl ...
- 【CodeChef】KNGHTMOV(方案数DP)
题意: 考虑一张无限大的方格棋盘.我们有一个“骑士”,它必须从(0,0)格开始,按照如下规则,移动至(X,Y)格:每一步,它只能从(u,v)格移动至(u+Ax,v+Ay)或者(u+Bx,v+By).注 ...
- Max Num
Problem Description There are some students in a class, Can you help teacher find the highest studen ...