Java: IO 字节流
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 字节流的更多相关文章
- JAVA IO 字节流与字符流
		文章出自:听云博客 题主将以三个章节的篇幅来讲解JAVA IO的内容 . 第一节JAVA IO包的框架体系和源码分析,第二节,序列化反序列化和IO的设计模块,第三节异步IO. 本文是第一节. ... 
- Java IO 字节流与字符流 (五)
		Java的IO流分为字符流(Reader,Writer)和字节流(InputStream,OutputStream),字节流顾名思义字节流就是将文件的内容读取到字节数组,然后再输出到另一个文件中.而字 ... 
- Java IO 字节流与字符流 (三)
		概述 IO流用来处理设备之间的数据传输 Java对数据的操作时通过流的方式 Java用于操作流的对象都在IO包中 流按操作的数据分为:字节流和字符流 流按流向不同分为:输入流和输出流 IO流常用基类 ... 
- Java IO 字节流与字符流 (二)
		1. 什么是流 Java中的流是对字节序列的抽象,我们可以想象有一个水管,只不过现在流动在水管中的不再是水,而是字节序列.和水流一样,Java中的流也具有一个“流动的方向”,通常可以从中读入一个字节序 ... 
- java IO字节流
		字节流可以读取 复制 各种类型 的文件. 写文件 第一种:读文件,每次读取1024字节的内容,读取太大文件不会导致内存溢出 第二种:读文件,更简单 思考?如果复制一个电影 或 1G 以上的文件,会出现 ... 
- Java IO教程
		1 Java IO 教程 2 Java IO 概述 3 Java IO: 文件 4 Java IO: 管道 5 Java IO: 网络 6 Java IO: 字节和字符数组 7 Java IO: S ... 
- Java Io(数据输入输出流)
		Java Io 字节流中的DataInputStream 和 DataOutputStream,使用流更加方便,是流的一个扩展,更方便读取int, long,字符等类型数据. 事例代码如下: pack ... 
- Java IO 学习总结 学习手册总结
		Java IO 是一套Java用来读写数据(输入和输出)的API.大部分程序都要处理一些输入,并由输入产生一些输出.Java为此提供了java.io包. 代码 github地址:https://git ... 
- java IO流  之 字节流
		一.file类的常用操作 File file=new File("E:\\test\\javaIo"); System.out.println(file.isDirectory() ... 
随机推荐
- 13. 星际争霸之php设计模式--正面模式
			题记==============================================================================本php设计模式专辑来源于博客(jymo ... 
- XAF去掉View页面的编辑器
			如图,去掉该编辑器功能. 1.detailView protected override void OnActivated() { base.OnActivat ... 
- 设置Ubuntu 14.04右键终端的方法
			设置Ubuntu 14.04右键终端的方法如下: 首先要安装一个包,即可在右键里面添加一个"打开终端"的菜单. sudo apt-get install nautilus-open ... 
- WPF:基础知识
			WPF:1.数据驱动 2.UI定义与运行逻辑分离 一. 1.编译 /t:exe 命令行程序:/t:winexe 图形用户界面程序:/t:library 动态链接库 2.启动 1)编译后生成的App.g ... 
- 【Jersey】IntelliJ IDEA + Maven + Jetty + Jersey搭建RESTful服务
			本文参考以下内容: 使用Jersey实现RESTful风格的webservice(一) Starting out with Jersey & Apache Tomcat using Intel ... 
- sudo service docker start
			sudo service docker start sudo docker run -t -i ubuntu:14.04 /bin/bash docker ps -l CONTAINER ID IMA ... 
- LPCTSTR 用法
			L表示long指针 这是为了兼容Windows 3.1等16位操作系统遗留下来的,在win32中以及其他的32为操作系统中, long指针和near指针及far修饰符都是为了兼容的作用 ... 
- C++开源大全
			程序员要站在巨人的肩膀上,C++拥有丰富的开源库,这里包括:标准库.Web应用框架.人工智能.数据库.图片处理.机器学习.日志.代码分析等. 标准库 C++ Standard Library:是一系列 ... 
- javascript Array Methods(学习笔记)
			ECMAScript 5 定义了9个新的数组方法,分别为: 1.forEach(); 2.map(); 3.filter(); 4.every(); 5.some(); 6.reduce() ... 
- 深入浅出设计模式——观察者模式(Observer Pattern)
			模式动机 建立一种对象与对象之间的依赖关系,一个对象发生改变时将自动通知其他对象,其他对象将相应做出反应.在此,发生改变的对象称为观察目标,而被通知的对象称为观察者,一个观察目标可以对应多个观察者,而 ... 
