java基础第23天



1:IO流的操作(掌握)

(1)字符输出流的使用。(掌握)
步骤:
创建字符输出流对象
调用字符输出流对象的write方法
write(int ch)
write(int[] chs)
write(int[] chs,int index,int len)
write(String str)
释放资源


代码体现:
FileWriter fw = new FileWriter("fw.txt");


fw.write("hello,io");
fw.flush();


fw.close();


问题?
创建字符输出流对象做了几件事情?
1:调用操作系统的资源创建了一个文本文件
2:创建了字符输出流对象
3:把字符输出流对象指向这个文本文件
为什么一定要释放资源?
做了两件事情,第一件让本是对象变成垃圾,
     第二件通知操作系统释放占用的资源。
flush方法和close方法的区别?
flush:刷新缓冲区,流对象还可以继续使用。
close:先刷新缓冲区,然后释放资源。流对象不可以被使用了。
写入数据的时候,如何追加数据?
通过构造方法可以解决
public FileWriter(String fileName,boolean append)


Demo:FileWriter fw = new FileWriter("a.txt",true);


换行该怎么实现?
不同的软件,换行符的标记识别不一样。
windows识别的换行是\r\n。所以,记事本打开的也必须是\r\n换行。
(2)字符输入流的使用。(掌握)
步骤:
创建字符输入流对象
调用字符输入流对象的read方法
 调用读取方法。
两种:
一次读取一个字符。
int read()
一次读取一个字符数组
int read(char[] chs)
释放资源

代码体现:
FileReader fr = new FileReader("fw.txt");


//方式1
int ch = 0;
while((ch=fr.read())!=-1)
{
System.out.print((char)ch);
}


//方式2
char[] chs = new char[1024];
int len = 0;
while((len=fr.read(chs))!=-1)
{
System.out.print(new String(chs,0,len));
}


fr.close();


问题?
读取数据的时候,文件一定要存在。
(3)案例:(掌握)
复制文本文件加入异常处理。(理解)
复制文本文件。(掌握)


代码体现:
FileReader fr = new FileReader("fr.txt");
FileWriter fw = new FileWriter("fw.txt");


//方式1
int ch = 0;
while((ch=fr.read())!=-1)
{
fw.write(ch);
}


//方式2
char[] chs = new char[1024];
int len = 0;
while((len=fr.read(chs))!=-1)
{
fw.write(chs,0,len);
}


fw.close();
fr.close();
(4)字符缓冲流(掌握)
BufferedWriter:
特殊方法:void newLine()
BufferedReader:
特殊方法:String readLine()


复制文本文件:
BufferedReader br = new BufferedReader(new FileReader("br.txt"));
BufferedWriter bw = new BufferedWriter(new FileWriter("bw.txt"));


//方式1
int ch = 0;
while((ch=br.read())!=-1)
{
bw.write(ch);
bw.flush();
}


//方式2
char[] chs = new char[1024];
int len = 0;
while((len=br.read(chs))!=-1)
{
bw.write(chs,0,len);
bw.flush();


}

//方式3
String line = null;
while((line=br.readLine())!=null)
{
bw.write(line);
bw.newLine();
bw.flush();
}


bw.close();
br.close();


2:装饰设计模式(理解)
(1)装饰设计模式:对类的功能进行增强,提高了灵活性。
(2)装饰设计模式和继承进行比较。
继承:面向的三大特性之一,但是,使体系臃肿。
装饰模式:让体系更灵活。
(3)自己模拟BufferedReader的readLine()方法

(4)自己模拟LineNumberReader的get/setLineNumber()方法



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值