FileReader是InputStreamReader的子类,InputStreamReader是Reader的子类。Reader系列是输入字符流。

1.一个字符一个字符的读取

 import java.io.*;

 public class FileReaderDemo {

     public static void main(String[] args) {
FileReader fr = null;
try{
fr = new FileReader("FileWriterDemo.txt");
int ch =0;
while((ch = fr.read())!=-1){
System.out.print((char)ch);
}
}
catch(IOException e){
System.out.println(e.toString());
}
finally{
try{
if(fr!=null)
fr.close();
}
catch(IOException e){
System.out.println(e.toString());
} } } }

2.使用字符数组临时存储读取的字符,数组长度可以自定义

 import java.io.FileReader;
import java.io.IOException; public class FileReaderDemo2 { public static void main(String[] args) {
FileReader fr = null;
try{
fr = new FileReader("FileWriterDemo.txt");
//定义字符数组用于存储读到的字符
char[] buf = new char[1024];
int aLength = fr.read(buf);
for(int x = 0;x< aLength;x++)
{
System.out.print(buf[x]);
} }
catch(IOException e){
System.out.println(e.toString());
}
finally{
try{
if(fr!=null)
fr.close();
}
catch(IOException e){
System.out.println(e.getStackTrace());
}
} } }

  为了提高读取效率,加入BufferedReader(Reader in)缓冲技术,该类可以使用readLine方法,一次读取一行。

 import java.io.*;

 public class BufferedReaderDemo {

     public static void main(String[] args) {
//创建一个读取流对象
FileReader fr = null;
try{
fr = new FileReader("xinwen.txt");
//加入缓冲技术,提高读取效率
BufferedReader bufr = new BufferedReader(fr); String line = null;
while((line=bufr.readLine())!=null){
System.out.println(line);
}
bufr.close();
}
catch(IOException e){
e.printStackTrace();
}
finally{
try{
if(fr!=null)
fr.close();
}
catch(IOException e){
e.printStackTrace();
}
}
}
}

  FileWriter是OutputStreamWriter的子类,而OutputStreamWriter是Writer的子类。Writer系列是输出字符流。

 import java.io.*;

 public class FileWriterDemo {

     public static void main(String[] args)throws IOException {
FileWriter fw = null;
try {
fw = new FileWriter("FileWriterDemo.txt",true);
fw.write("2015");
fw.write("\r\n");
fw.write("一起努力!"); fw.flush();
}
catch(IOException e){
System.out.println(e.toString());
}
finally{
try{
if(fw!=null)
fw.close();
}
catch(IOException e){
System.out.println(e.toString());
}
}
} }

  为了提阿写入效率,使用BufferedWriter(Writer wr)缓冲技术,该类中的newLine方法可以输出一个换行符,而且是跨平台的。  

  把输入、输出结合起来,模拟复制文件。方法一,不使用缓冲技术

 import java.io.*;

 public class FileCopyDemo {

     public static void main(String[] args) {

         //copy1();
copy2();
}
//读一个字符就存一个
public static void copy1(){
//创建目的文件
FileWriter fw = null;
//与已有文件关联
FileReader fr = null; try{
fw = new FileWriter("/home/owen/news_copy.txt");
fr = new FileReader("news.txt");
int ch = 0;
while((ch=fr.read())!=-1){
fw.write(ch);
}
}
catch(IOException e){
System.out.println(e.getStackTrace());
}
finally{
try{
if(fw!=null)
fw.close();
if(fr!=null)
fr.close();
}
catch(IOException e){
System.out.println(e.getStackTrace());
}
}
}
public static void copy2(){
FileWriter fw = null;
FileReader fr = null;
try{
fw = new FileWriter("news_copy2.txt");
fr = new FileReader("news.txt"); char[] buf = new char[1024];
int len = 0;
while((len = fr.read(buf))!=-1){
fw.write(buf,0,len);
}
}
catch(IOException e){
throw new RuntimeException("读写失败");
}
finally{
if(fr!=null){
try{
fr.close();
}
catch(IOException e){
System.out.println(e.getStackTrace());
}
}
if(fw!=null){
try{
fw.close();
}
catch(IOException e){
System.out.println(e.getStackTrace());
}
}
}
} }

  方法二,使用缓冲技术

 import java.io.*;

 public class CopyByBuffered {

     public static void main(String[] args) {
BufferedReader bufr = null;
BufferedWriter bufw = null;
try{
bufr = new BufferedReader(new FileReader("BufferedReaderDemo.java"));
bufw = new BufferedWriter(new FileWriter("BufferedReaderDemo_copy.txt")); String line = null;
while((line = bufr.readLine())!=null){
bufw.write(line);
bufw.flush();
bufw.newLine();
}
}
catch(IOException e){
throw new RuntimeException("复制失败!");
}
finally{
try{
if(bufr!=null)
bufr.close();
}
catch(IOException e){
throw new RuntimeException("Read file mission failed!");
}
try{
if(bufw!=null)
bufw.close();
}
catch(IOException e){
throw new RuntimeException("Write file mission failed!");
}
} } }

Java: IO 字节流的更多相关文章

  1. JAVA IO 字节流与字符流

    文章出自:听云博客 题主将以三个章节的篇幅来讲解JAVA IO的内容 . 第一节JAVA IO包的框架体系和源码分析,第二节,序列化反序列化和IO的设计模块,第三节异步IO. 本文是第一节.     ...

  2. Java IO 字节流与字符流 (五)

    Java的IO流分为字符流(Reader,Writer)和字节流(InputStream,OutputStream),字节流顾名思义字节流就是将文件的内容读取到字节数组,然后再输出到另一个文件中.而字 ...

  3. Java IO 字节流与字符流 (三)

    概述 IO流用来处理设备之间的数据传输 Java对数据的操作时通过流的方式 Java用于操作流的对象都在IO包中 流按操作的数据分为:字节流和字符流 流按流向不同分为:输入流和输出流 IO流常用基类 ...

  4. Java IO 字节流与字符流 (二)

    1. 什么是流 Java中的流是对字节序列的抽象,我们可以想象有一个水管,只不过现在流动在水管中的不再是水,而是字节序列.和水流一样,Java中的流也具有一个“流动的方向”,通常可以从中读入一个字节序 ...

  5. java IO字节流

    字节流可以读取 复制 各种类型 的文件. 写文件 第一种:读文件,每次读取1024字节的内容,读取太大文件不会导致内存溢出 第二种:读文件,更简单 思考?如果复制一个电影 或 1G 以上的文件,会出现 ...

  6. Java IO教程

    1  Java IO 教程 2 Java IO 概述 3 Java IO: 文件 4 Java IO: 管道 5 Java IO: 网络 6 Java IO: 字节和字符数组 7 Java IO: S ...

  7. Java Io(数据输入输出流)

    Java Io 字节流中的DataInputStream 和 DataOutputStream,使用流更加方便,是流的一个扩展,更方便读取int, long,字符等类型数据. 事例代码如下: pack ...

  8. Java IO 学习总结 学习手册总结

    Java IO 是一套Java用来读写数据(输入和输出)的API.大部分程序都要处理一些输入,并由输入产生一些输出.Java为此提供了java.io包. 代码 github地址:https://git ...

  9. java IO流 之 字节流

    一.file类的常用操作 File file=new File("E:\\test\\javaIo"); System.out.println(file.isDirectory() ...

随机推荐

  1. 小Q系列之 最佳裁判

    这个题需要注意一些数据条件 尤其是一些输入数据条件 #include<algorithm> #include<stdio.h> #include<math.h> u ...

  2. CPU cache

    cache是一种小而快的缓冲器,用在CPU和main memory之间进行数据读写. 在processor访问主memory时,首先检查cache中是不是有一份copy,如果cache hit,则直接 ...

  3. MergeSort(归并排序)算法Java实现

    归并排序  归并排序 (merge sort) 是一类与插入排序.交换排序.选择排序不同的另一种排序方法.归并的含义是将两个或两个以上的有序表合并成一个新的有序表.归并排序有多路归并排序.两路归并排序 ...

  4. Qt信号与槽应用实例一

    ..... connect(m_pGlobelWidget,signal(globeControlClick(object,object)),this,slot(globeControlClick(o ...

  5. 【转】PowerShell入门(三):如何快速地掌握PowerShell?

    转至:http://www.cnblogs.com/ceachy/archive/2013/02/01/HowToLearnPowerShell.html 如何快速地掌握PowerShell呢?总的来 ...

  6. (转) CCEditBox 编辑框

    CCEditBox 编辑框 原文: http://blog.csdn.net/cloud95/article/details/8773470 分类: cocos2d-x 2013-04-08 19:1 ...

  7. mac攻略(五) -- 使用brew配置php7开发环境(mac+php+apache+mysql+redis)

    前面介绍过基本的配置,后来我又从网上查找了很多资料,经过不断的摸索,下面做了一个总结,希望能对大家提供些许帮助(Mac版本是sierra)   一.mac系统会自带git,而我们要做的是自己安装git ...

  8. ajax完整结构

    $.ajax({ url:"服务器", data:{"key":所传数据}, type:"post", dataType:"jso ...

  9. Less 使用指南

    简而言之 Less是为了简化css http://less.bootcss.com/features/ 以上链接是Less中文网站,里面有对Less的详细介绍. 一下写在使用中遇到的问题: 1.下载L ...

  10. [多校联考2 T3] 排列 (DP)

    DP Description 对于一个排列,考虑相邻的两个元素,如果后面一个比前面一个大,表示这个位置是上升的,用 I 表示,反之这个位置是下降的,用 D表示.如排列 3,1,2,7,4,6,5 可以 ...