——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——
io提高流读写效率
io BufferedWriter,BufferedReader第一讲
特有的方法 newLine() 换行的方法 ## BufferedWrite ##
package com.kaka.buffered;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
/**
* 用BufferedWriter写入文件
*
* 流的缓冲去,提高流读写效率
* @author Administrator
*
*/
public class BufferedTest {
public static void main(String[] args) {
BufferedMethod();
}
private static void BufferedMethod() {
// TODO Auto-generated method stub
//字符流对象
FileWriter fw=null;
//字符流缓冲对象
BufferedWriter bw=null;
try {
fw=new FileWriter("c:\\demo.txt");
bw=new BufferedWriter(fw);
//要写入内容
bw.write("天赋异禀");
//缓存流专有的换行方法 (\r\n)
bw.newLine();
//再写入一条
bw.write("天纵奇才");
//刷进文件
bw.flush();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
//只要关闭缓存流就行
if(bw!=null)
try {
bw.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
``` ## BufferedReader ##
**读取文本文件特有的方法 readLine() **
<div class="se-preview-section-delimiter"></div>
```这里写代码片
package com.kaka.buffered;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
/**
* 利用缓冲区去读取文件
* BufferedReader对象特有地方法
* @author Administrator
*
*/
public class BufferedReaderTest {
public static void main(String[] args) {
bufferedReaderMethod();
}
private static void bufferedReaderMethod() {
// TODO Auto-generated method stub
//字符读取流对象
FileReader fr=null;
//利用缓冲流,加粗水管
BufferedReader br=null;
try {
fr=new FileReader("C:\\Documents and Settings\\Administrator" +
"\\桌面\\HeiMa\\src\\com\\kaka\\io\\test1.java");
br=new BufferedReader(fr);
//用来接收
String lin=null;
try {
//只要拿到的文本文件部位空,就一直循环
while((lin=br.readLine())!=null){
//一行一行的拿
System.out.println(lin);
}
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
if(br!=null)
try {
br.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
## BufferedReader,BufferedWriter ,Copy文件 ##
## 第三讲 ##
``package com.kaka.buffered;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
/**
*利用BufferedReader 和 BufferedWriter 来 copy文件
*
* @author Administrator
*
*/
public class BufferedReaderCopy {
public static void main(String[] args) {
bufferedCopyMethod();
}
private static void bufferedCopyMethod() {
// TODO Auto-generated method stub
BufferedReader br=null;
BufferedWriter bw=null;
try {
br=new BufferedReader(new FileReader("C:\\Documents and Settings\\Administrator" +
"\\桌面\\HeiMa\\src\\com\\kaka\\io\\test1.java"));
try {
bw=new BufferedWriter(new FileWriter("d:\\java.txt"));
String str=null;
while((str=br.readLine())!=null){
//写入文件
bw.write(str);
//换行
bw.newLine();
//刷新
bw.flush();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
if(br!=null)
try {
br.close();
if(bw!=null)
bw.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
## 第四讲 自定义BufferedReader 里面的 readLine()和 close() ##
这里写代码片
“`
“`这里写代码片
package com.kaka.buffered;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
/**
* 利用缓冲区去读取文件
* BufferedReader对象特有地方法
* @author Administrator
*
*/
public class BufferedReaderTest {
public static void main(String[] args) {
bufferedReaderMethod();
}
private static void bufferedReaderMethod() {
// TODO Auto-generated method stub
//字符读取流对象
FileReader fr=null;
//利用缓冲流,加粗水管
BufferedReader br=null;
try {
fr=new FileReader("C:\\Documents and Settings\\Administrator" +
"\\桌面\\HeiMa\\src\\com\\kaka\\io\\test1.java");
br=new BufferedReader(fr);
//用来接收
String lin=null;
try {
//只要拿到的文本文件部位空,就一直循环
while((lin=br.readLine())!=null){
//一行一行的拿
System.out.println(lin);
}
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
if(br!=null)
try {
br.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
## BufferedReader,BufferedWriter ,Copy文件 ##
## 第三讲 ##
“package com.kaka.buffered;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
/**
*利用BufferedReader 和 BufferedWriter 来 copy文件
*
* @author Administrator
*
*/
public class BufferedReaderCopy {
public static void main(String[] args) {
bufferedCopyMethod();
}
private static void bufferedCopyMethod() {
// TODO Auto-generated method stub
BufferedReader br=null;
BufferedWriter bw=null;
try {
br=new BufferedReader(new FileReader("C:\\Documents and Settings\\Administrator" +
"\\桌面\\HeiMa\\src\\com\\kaka\\io\\test1.java"));
try {
bw=new BufferedWriter(new FileWriter("d:\\java.txt"));
String str=null;
while((str=br.readLine())!=null){
//写入文件
bw.write(str);
//换行
bw.newLine();
//刷新
bw.flush();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
if(br!=null)
try {
br.close();
if(bw!=null)
bw.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
## 装饰设计模式 ##
第四讲 自定义BufferedReader 里面的 readLine()和 close()
这个世界sb很多
这里写代码片
package com.kaka.buffered;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
/**
*
* 自定义BufferedReader
*
* @author Administrator
*
*/
public class CustomBufferedReader {
public static void main(String[] args) {
//字符流
FileReader fr=null;
MyBufferedReader mbr=null;
try {
fr = new FileReader("C:\\Documents and Settings\\Administrator" +
"\\桌面\\HeiMa\\src\\com\\kaka\\io\\test1.java");
//自定义的缓冲流
mbr=new MyBufferedReader(fr);
String len=null;
while((len=mbr.myreadLine())!=null){
System.out.println(len);
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
if(mbr!=null)
mbr.myClose();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
MyBufferedReader 这个类就是装饰类
//模拟BufferedReader类 里面 readLine()方法和 close()方法
class MyBufferedReader{
//文件流
public FileReader fr;
//内部类的构造函数
MyBufferedReader(FileReader fr) {
super();
this.fr = fr;
}
//读取 一行 的方法
public String myreadLine(){
//定义一个字符串容器
StringBuilder sb=new StringBuilder();
int len=0;
try {
while((len=fr.read())!=-1){
if(len=='\r')
continue;
if(len=='\n')
return sb.toString();
else{
sb.append((char)len);
}
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//不管 有没有\n,只要sb有就必须返回
if(sb.length()!=0)
return sb.toString();
return null;
}
//关闭的方法
public void myClose() throws IOException{
fr.close();
}
}
## 装饰设计模式 将被增强的对象传给增强的类 ##
对原来类功能的增强 例如:FileReader 的增强类(也就是装饰类) BufferedReader(new FileReader())
毕老师的视频讲解源码
package com.kaka.buffered;
/**
*
* 装饰设计模式
* @author Administrator
*
*/
public class ModelBufferedReader {
public static void main(String[] args) {
Person p=new Person();
// p.feed();
SuperPerson sp=new SuperPerson(p);
sp.superFeed();
}
}
//装饰之前的类
class Person{
//装饰前的方法
public void feed(){
System.out.println(“吃饭”);
}
}
//装饰的类
class SuperPerson{
private Person p;
public SuperPerson(Person p) {
super();
this.p = p;
}
//增强的吃饭的方法
public void superFeed(){
System.out.println("喝汤");
System.out.println("吃水果");
p.feed();
System.out.println("睡觉");
}
}