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)
模式动机 建立一种对象与对象之间的依赖关系,一个对象发生改变时将自动通知其他对象,其他对象将相应做出反应.在此,发生改变的对象称为观察目标,而被通知的对象称为观察者,一个观察目标可以对应多个观察者,而 ...