黑马程序员——字符流的缓冲区详解

import java.io.BufferedWriter;

import java.io.FileWriter;

import java.io.IOException;

public class Demo1 {

/**

* @param args

* 字符流的缓冲区

* BufferedWriter

* BufferedReader

* 缓冲区要结合流才可以使用

* 在流的基础上对流动功能进行增强

*

* 缓冲区的出现是为了提高,流的操作效率而出现的

* 所以在创建缓冲区之前,必须要先有流对象

* @throws IOException

*/

public static void main(String[] args) throws IOException {

// TODO Auto-generated method stub

//创建一个流对象

FileWriter fileWriter=new FileWriter("D://1.txt");

//为了提高字符流的写入效率,加入缓冲技术

BufferedWriter bufferedWriter=new BufferedWriter(fileWriter);

//只要将需要被提高效率的流对象作为参赛传入到缓冲区的构造函数中

bufferedWriter.write("fafadsf");

bufferedWriter.newLine();

bufferedWriter.write("afadsdfasf");

//缓冲区,一定要刷新

bufferedWriter.flush();

//就是关闭缓冲区的流对象

bufferedWriter.close();

}

}

package Excr191;

import java.io.BufferedReader;

import java.io.FileNotFoundException;

import java.io.FileReader;

import java.io.IOException;

import java.util.Iterator;

public class Demo2 {

/**

* 字符流读取流缓冲区

* 该缓冲区提供了一个异常读一行的方法,方便于对文本数据的获取

* 方法是readline

* 当返回null时,表示读到文件末尾

*

* @param args

* @throws IOException

*/

public static void main(String[] args) throws IOException {

// TODO Auto-generated method stub

//创建一个读取流对象和文件相关联的

FileReader fileReader=new FileReader("D://1.txt");

//为了提高效率缴入缓冲技术,将字符读取流对象作为参数传递给缓冲对象的构造函数

BufferedReader bufferedReader=new BufferedReader(fileReader);

String lineString=null;

while ((lineString=bufferedReader.readLine())!=null) {

System.out.println(lineString);

}

String readString=bufferedReader.readLine();

System.out.println(readString);

bufferedReader.close();

}

}

package Excr191;

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.FileNotFoundException;

import java.io.FileReader;

import java.io.FileWriter;

import java.io.IOException;

import javax.management.RuntimeErrorException;

public class Demo3 {

/**字符读取流缓冲区

* 该缓冲区提供了一个一次度一行的方法 readLine,方便于对文本数据的获取

* 当返回null是,表示读到文件末尾

*

* readLine方法返回的是时候只有返回回车符之前的数据内容,并不返回回车符

*

* readLIne方法返回的时候只返回回车符之前的内容

* 通过缓冲区复制一个。java文件

* readline方法的原理:

* 无论是读一行,获取读取多个字符。其实最终都是在硬盘上一个一个的读取。

* 所以最终使用的还是read方法读一个的方法

* @param args

* @throws IOException

*/

public static void main(String[] args)   {

// TODO Auto-generated method stub

BufferedReader bufferedReader=null;

BufferedWriter bufferedWriter=null;

try {

bufferedReader=new BufferedReader(new FileReader("D://1.txt"));

bufferedWriter=new BufferedWriter(new FileWriter("D://aa.txt"));

String line=null;

while ((line=bufferedReader.readLine())!=null) {

bufferedWriter.write(line);

bufferedWriter.flush();}

} catch (IOException e) {

// TODO Auto-generated catch block

throw new RuntimeErrorException(null, "读写失败");

}

finally

{

try {

if (bufferedReader!=null) {

bufferedReader.close();

}

} catch (Exception eqwertyuioplkjhgfdsazxcvbnm) {

// TODO: handle exception

}

}

}

}

package Excr191;

import java.io.FileNotFoundException;

import java.io.FileReader;

import java.io.IOException;

public class Demo4 {

/**明白了BUfferedReader类中特有方法readLine的原理后

* 可以自定义一个类中包含一个功能hereadLine一致的方法

* 来模拟一下BufferedReader

* @param args

* @throws IOException

*/

public static void main(String[] args) throws IOException {

// TODO Auto-generated method stub

FileReader fileReader=new FileReader("D:\\1.txt");

}

}

class MyBufferedReader{

//可以一次读一行的方法

private FileReader rFileReader;

MyBufferedReader(FileReader rFileReader)

{

this.rFileReader=rFileReader;

}

public String myreadLine() throws IOException

{

//定义一个临时容器,源BufferReader封装的是字符数组

//为了演示方便,定义了一个StringBuilder容器,因为最终还是要将数据变成字符串

StringBuilder stringBuilder=new StringBuilder();

int ch=0;

while((ch=rFileReader.read())!=-1)

{

if (ch==‘\r‘)

continue;

if(ch==‘\n‘)

return stringBuilder.toString();

else {

stringBuilder.append((char)ch);

}

}

return null;

}

}

时间: 2024-10-15 18:54:30

黑马程序员——字符流的缓冲区详解的相关文章

黑马程序员---Java多线程的用法详解

------- android培训.java培训.期待与您交流! ---------- Java线程详解 一.操作系统中线程和进程的概念 现在的操作系统是多任务操作系统.多线程是实现多任务的一种方式. 进程是指一个内存中运行的应用程序,每个进程都有自己独立的一块内存空间,一个进程中可以启动多个线程.比如在Windows系统中,一个运行的exe就是一个进程. 线程是指进程中的一个执行流程,一个进程中可以运行多个线程.比如java.exe进程中可以运行很多线程.线程总是属于某个进程,进程中的多个线程

黑马程序员——@property及其参数的详解

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------ @property详解 1.什么是@property? @property是OC特有的一个关键字,它属于编译器一个特性,编译器碰到@property时,会自动展开为成员变量的set和get方法 在Xcode4.5之前,Xcode编译器碰到@property会将其转换为成员变量set.get方法的声明,碰到@synthesize会展开为成员变量set.get方法的实现,所以XCode4.5之前,@

黑马程序员_ Objective-c 面向对象笔记详解

1)类,对象,方法 类 类名: 1) 类名的第一个字母必须是大写 2) 不能有下划线 3) 多个英文单词,用驼峰标识 类的声明和实现 类的声明 @interface 类名 : NSObject { @public 成员变量: } 方法声明; @end 类的实现 @implementation 类名 方法实现; @end 举例说明: view plaincopy //Horse类的声明 @interface Horse : NSObject { @public //使成员变量可以让外部访问 //定

黑马程序员——c语言学习—作用域详解

-----------Java培训.Android培训.IOS培训..Net培训.期待与您交流!------------ 本节我们系统学习一下c语言中的变量类型及作用域. 1.全局变量 全局变量是在从定义开始,到整个程序结束都存在的变量,他是在所有函数体的外面定义的变量,存储在静态存储区,所有的代码都可以访问,定义如下: #include <stdio.h> int a; // 定义全局变量 int main() { a = 10; // 函数内可以访问 return 0; } 需要注意的是,

黑马程序员_IO流1

异常1.异常的继承体系: java.lang.Throwable类,所有异常和错误的父类 Error类所有错误的父类 Exception类所有异常的父类 RuntimeException NullPointerException ClassCastException IndexOutOfBoundsException 错误,比较严重的问题,一旦出现了错误,程序根本不能运行,必须修改源代码. 异常,比较轻微的问题,一旦出现了异常,程序可以处理掉异常,继续运行.异常一般是程序的最后一个问题. 2.T

黑马程序员_IO流2

File类 1.File类 不属于流对象.作用:将机器上的路径和目录封装成一个File对象,提供了很多的方法和成员变量,让我们操作目录和路径   目录就是文件夹.路径,指由文件夹组成的到达文件夹的通道. 2.File类的静态成员变量   一共提供的4个变量,掌握的只有2个,跨平台 static String separator  结果\ Windows目录分隔符  Linux下 / static String pathSeparator 结果 ; Windows下的路径与路径之间的分隔符 Lin

黑马程序员——打印流小结

//打印流 /* 1.字节打印流,他可以获取的参数有: 1.File对象 2.字符串 3.字节输出流,可以实现自动刷新 2.字符打印流,他可以获取的参数有: 1.File对象 2.字符串 3.字节输出流,可以实现自动刷新 4.字符输出流,可以实现自动刷新 */ import java.io.*; import java.io.PrintWriter; import java.io.BufferedReader; public class Print{ public static void mai

黑马程序员 IO流 文件的分割与合并

---------------------- ASP.Net+Unity开发..Net培训.期待与您交流! ----------------------package cn.itcast.IO; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException;

黑马程序员——IO流概述、字符流、字节流、流操作规律(一)

第一节     IO概述 概述 1.IO流:即InputOutput的缩写. 2.特点: 1)IO流用来处理设备间的数据传输. 2)Java对数据的操作是通过流的方式. 3)Java用于操作流的对象都在IO包中. 4)流按其操作数据的类型分为两种:字节流和字符流. 5)流按其流向分为:输入流和输出流. 注意:流只能操作数据,而不能操作文件. 3.IO流的常用基类: 1)字节流的抽象基流:InputStream和OutputStream 2)字符流的抽象基流:Reader和Writer 注:此四个