您的位置:首页 > 职场人生

黑马程序员——Java学习总结:转换流和流的操作总结

2015-07-30 22:02 633 查看
如何实现读取键盘录入?

System.out:对应的是标准输出设备,控制台 

System.in:对应的标准输入设备,键盘
<code class="hljs avrasm has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">代码:
InputStream <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">in</span>=System<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.in</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span>
int by=<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">in</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.read</span>()<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span>
System<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.out</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.println</span>(by)<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span>
结束录入

<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">in</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.close</span>()<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li></ul>


转换流

读取转换流:InputStreamReader 

写入转换流:OutputStreamReader

读取转换流:InputStreamReader 字节流通向字符流的桥梁

步骤 

1.获取键盘录入对象 

Inputstream in=System.in 

2.将字节流对象转换成字符流对象,使用转换流InputStreamReader 

InputStreamReader isr=new InputStreamReader(in); 

3.提高效率使用字符流缓冲区 BufferedReader进行读取 

BufferedReader bf=new BufferedReader(is); 

String line=null; 

while((line=bf.readLine())!=null) 



if(“over”.equals(line)) 

break; 

sop(line); 



bufr.close;

写入转换流:OutputStreamReader 字符流通向字节流的桥梁

步骤 

1.获取输出对象 

Outputstream out=System.out 

2.将字符流对象转换成字节流对象,使用转换流OutputstreamWriter 

OutputstreamWriter osw=new OutputstreamWriter(out); 

3.提高效率使用字符流缓冲区 BufferedWriter进行写入 

BufferedWriter bw=new BufferedWriter(osw); 

String line=null; 

while((line=bf.readLine())!=null) 



if(“over”.equals(line)) 

break; 

bw.write(line); 

bufw.newLine(); 



bufr.close;

操作流规律总结:

流操作基本规律: 
两个明确: 

1.明确源和目的

源:输入流。InputStream字节流 Reader 字符流 

目的:输出流 OutPutStream 字节流 Writer 字符流

2.操作的数据是否是纯文本

是 就是字符流 如果设备是键盘 就将字节流转换为字符流 

不是 就是 字节流

3.当体系明确后,在明确要是用那个具体的对象 

通过设备来区分 

源设备 内存 硬盘 键盘 

目的设备 内存 硬盘 控制台

4.是否需要提高效率 

是 BufferedReader BufferedInputStream 

否 BuffreredWriter BufferedOutputStream

案例分析 :

1.将一个文本文件中的数据存储到另一个文件中,复制文件

源: InputStream字节流 Reader 字符流 

是否是纯文本 是 Reader 

设备: 文件 操作文件的对象 就是FileReader 

是否需要高效 

是 BufferedReader 

FileReader fr=new FileReader(“a.txt”); 

BufferedReader bufr=new BufferedReader(fr);

目的 OutPutStream 字节流 Writer 字符流 

是否是纯文本 :是 Writer 

设备: 文件 写入文件的对象 就是 FileWriter 

是否需要高效 是 BufferedWriter

FileWriter fw=new FileWriter(“b.txt”); 

BufferedWriter bufw=new BufferedWrite
4000
r(fw);

2.将一个图片文件数据存储到另一个文件中,复制文件。

分析 

源: 

是否是纯文本 : 不是 InputStream 

设备 文件 就是 FileInputStream 

是否高效 是 

BufferedInputStream

FileInputStream isr=new FileInputStream(“a.jpg”); 

BufferedInputStream bufis=new BufferedInputStream(isr); 

目的 

是否纯文本 :不是 OutPutStream 

设备:文件 FileOutPutStream 

是否高效 是 

BufferedOutputStream 

FileOutPutStream osw=new FileOutPutStream(“b.jpg”); 

BufferedOutputStream bufos=new BufferedOutputStream(osw);

3.需求将键盘录入的数据保存到一个文件中 。

源:键盘 字节流 

是否纯文本 Reader 

设备 :键盘 ,对应的对象时 System.in 对应的是字节流 ,为了操作方便 转成字符流 

既然明确了Reader 就将System.in 转换成字符流 InputStreamReader

InputStreamReader isr=new InputStreamReader(System.in);

需要高效吗 ?

BufferedReader bufr=new BufferedReader(isr);

目的: 文件 

是否纯文本 是 Writer 

设备:文件 FileWriter 

需要高效吗? 

是 BufferedWriter

4.扩展 :想要吧录入的数据按照指定的编码表(utf-8)将数据存到文件中 

目的:OutPutStream 字节流 Writer 字符流 

是否是存文本:是 Writer 

设备 :文件 fileWriter 

默认编码表是 gbk 

编码标只有转换流可以指定。所以要使用的对象是写入转换流 OutputStreamWriter 

转换流需要接受一个自己输出流,操作字节输出流的是FileOutputStream 

OutputStreamWriter osw=new OutputStreamWriter(new FileOutputStream(“b.txt”),”utf-8”); 

BufferedWriter bufw=new BufferedWriter (osw);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: