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() ...
随机推荐
- 使用 Google Guava 美化你的 Java 代码
文章转载自:http://my.oschina.net/leejun2005/blog/172328 目录:[ - ] 1-使用 GOOGLE COLLECTIONS,GUAVA,STATIC IMP ...
- Java基本语法
一:跨行 Java变量不能跨行,如:String na me = “张三"; 字符串不能跨行,如:String a = "xxxxxxxxxx yyyyyyyy"; 二: ...
- HAL驱动库学习--如何使用HAL库
一 概述 下图是表述了用户层和HAL_Driver的交互过程,基本上从用户APP调用HAL_Driver APIs并且视情况当使用DMA或者专用中断时通过中断处理程序调用HAL_Driver APIs ...
- ROS探索总结(三)——ROS新手教程【转】
转自:http://blog.csdn.net/hcx25909/article/details/8811313 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[-] 一ROS的 ...
- Centos6.7安装docker1.7.1
Docker当前发布的最新版本已经到了1.11,其官网上针对Centos的的安装需求如下: Docker requires a -bit installation regardless of your ...
- python : HTML+CSS (左侧菜单)
左侧菜单 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3 ...
- 【入门】匈牙利算法+HNOI2006 hero超级英雄
一.关于匈牙利算法 匈牙利算法是由匈牙利数学家Edmonds提出的,用增广路径求二分图最大匹配的算法. 听起来高端,其实说白了就是: 假设不存在单相思(单身狗偷偷抹眼泪),在一个同性恋不合法的国家里( ...
- android小知识之fragment中调用startActivityForResult(Intent intent,int requestcode)所遇到的问题
大家都知道对于Activity和Fragment都可以注册OnActivityResult()方法,但是要注意几点: a.当activity和fragment都注册了OnActivityResult( ...
- 【leetcode❤python】 225. Implement Stack using Queues
#-*- coding: UTF-8 -*-class Stack(object): def __init__(self): """ i ...
- Oracle介绍(初学者必须知道的)
1.为什么学习数据库?(两个概念) 数据库的概念: 数据库是按照数据结构组织,存储和管理数据的仓库. 数据库,简单来说是本身可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据进行新增. ...