黑马程序员技术交流社区
标题:
判断具体要用哪个流进行IO存读
[打印本页]
作者:
z13561291
时间:
2015-11-20 21:11
标题:
判断具体要用哪个流进行IO存读
只是简写代码 没有抛出异常,也没有try()catch() 理解方法就好
复制代码
根据视频的联系做的 有错的地方请指出,互相交流下
作者:
苹果核的梦想
时间:
2015-11-20 21:19
代码呢?
作者:
z13561291
时间:
2015-11-20 21:25
1.
源:键盘录入
目的:控制台
2.需求:想把键盘录入的数据存储到一个文件中
源:键盘录入
目的:文件
3.需求:想要将一个文件的数据打印在控制台上
源:文件
目的:控制台
流操作的基本规律:
流对象有很多,不知道该用哪一个
三个明确:
1.明确源和目的
源:输入流。InputStream Reader
目的:输出流 OutputStream Writer
2.明确操作的数据是否是纯文本
是纯文本:字符流
不是纯文本:字节流
3.当体系明确后,在明确要使用哪个具体的对象
通过设备来进行区分
源设备:内存,硬盘,键盘
目的设备:内存,硬盘,控制台
练习:
一。
把一个文本文件中数据存储到另一个本文文件中。复制文件
源:InputStream Reader
是否是纯文本?是, Reader
目的:OutputStream Writer
是否为纯文本?是, Writer
Reader中操作文本文件的为FileReader,FileWriter
是否需要提高效率?
是 加入Reader体系中BufferedReader
BufferedReader bufr = new BufferedReader(new FileReader("要读文件"));
BufferedWriter bufw = new BufferedWriter(new FileWriter("要写入文件"));
String line = null;
while((line= bufr.readLine())!=null){
bufw.write(line);
bufw.newLine();
bufw.flush();
}
bufw.close();
bufr.close();
二。
把一个图片文件中数据存储到另一个文件中
源:InputStream Reader
会否为纯文本? 不是。 用InputStream
目的:是否为纯文本?不是,用OutputStream
是否要提高效率? 是 加入体系中 BufferedInputStream, BufferedOutputStream
BufferedInputStream bufis = new BufferedInputStream(new InputStream("要读取图片"));
BufferedOutputStream bufos = new BufferedOutputStream(new OutputStream("要写入的文件"));
int by = 0;
while((by=bufis.read())!=-1){
bufos.write(by);
}
bufos.close();
bufis.close();
三。
将键盘录入的数据保存到一个文件中
源: InputStream Reader
是否为纯文本? 是, Reader
目的:是否为纯文本? 是,Writer
设备:键盘 对应System.in
把System.in转换成字符流:InputStreamReader
是否要提高效率? 是 ,加入体系中BufferedReader, BuffereddWriter
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new FileWriter());
String line = null;
while((line=br.readLine())!=null){
if("over".equals(line))
break;
bw.write(line);
bw.newLine();
bw.flush();
}
bw.close();
br.close();
扩展: 想要把录入的数据按指定编码表(utf-8),将数据存到文件中
源:是否为纯文本? 是,Reader
目的:是否为纯文本? 是,Writer
设备:文本:FileReader ,FileWriter
但FileWriter是默认编码表GBK
用转换流 OutputStreamWriter(new FileOutputStream("要写入的文本","utf-8"))
是否要提高效率? 是
BufferedReader bufr = new BufferedReader(new FileReader("要读取的文本"));
BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("写入文本","utf-8")))
while((line=bufr.readLine())!=null){
bufw.write(line);
bufw.newLine();
bufw.flush();
}
bufw.close();
bufr.close();
四。
将一个文本数据打印在控制台上
源:是否为纯文本? 是, Reader
目的 是否为纯文件? 是, Wrtier
设备:控制台 System.out
把System.out 转换成OutputStream
是否要提高效率? 是 加入体系中 BufferedReader, BufferedWriter
BufferedReader bufr = new BufferedReader(new FileReader("要读取文件"));
BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(System.out));
String line = null;
while((line=bufr.readLine())!=null){
bufw.write(line);
bufw.newLine();
bufw.flush();
}
bufw.close();
bufr.close();
复制代码
作者:
苹果核的梦想
时间:
2015-11-20 21:48
思路清晰,水到渠成...
作者:
小笨笨天
时间:
2015-11-20 21:52
那为什么不直接去用伪码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2