黑马程序员_<<转换流(InputStreamReader,OutputStreamWriter)>>
来源:互联网 发布:重庆小面50强加盟知乎 编辑:程序博客网 时间:2024/05/17 19:15
--------------------ASP.Net+Android+IOS开发、.Net培训、期待与您交流! --------------------
1.字节流转换成字符流(InputStreamReader)
字节流:InputStream -------读取
字符流:Reader ------读取
在字节流读取的时候用的是一个一个字节的读取方式或者是字节数组的读取方式,
在字符流中读取的时候,除了有一个一个字符的读取方式和数组 的读取 方式外 ,在缓冲技术里面有一行一行的读取,这个方法在读取的时候很好用也很方面,那么我们就可以把字节流的转换成字符流,然后利用缓冲对象来使用读取一行的方法。
字符流要向获得从键盘录入的信息,那么必须使用字节流,然后把字节流准换成字符流
步骤:
1.准备好一个字节流(InputStream in)
2.利用InputStreamReader(isr)把字节流对象作为其构造函数的参数,new InputStreamReader(in)
3.然后使用缓冲技术(BufferedReader对象封装转换流)newBufferedReader(isr),然后就可以使用读取行的方法了。
4.最后要关闭流
举例:读取键盘的录入的数据
InputStream in = System.in;
InputStreamReader isr =new InputStreamReader(in);
BufferedReader br =newBufferedReader(isr);
然后我们就可以使用br对象纪念性读取键盘录入的数据了。
我们也可以把这三句转换成一句。
BufferedReader bw = newBufferedReader (isr));
2. 字节输入流转换成字符输入流(OutputStreamWriter)
字符流:Writer -----写入流
字节流:OutputStream ---写入流
OutputStreamWriter 是字符流通向字节流的桥梁:可使用指定的charset
将要写入流中的字符编码成字节。
步骤:
1.准备一个字符流
2.利用OutputStreamWriter(OutputStream out)把其转换成字节流,
3.可以利用其缓冲对象对其进行封装。然后做相应的操作。
4.最后关闭流
举例:
OutputStream out = System.out;
OutputStreamWriter osw = new OutputStreamWriter(out);
BufferedWriter bw = new BufferedWriter(osw);
也可以将这三句合成一句话
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
3. 流操作(转换流练习)
1. 源:键盘录入 (输出)目的:控制台
import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStream;import java.io.OutputStreamWriter; public class ZhuanhuanDemo { public static void main(String[] args) throws IOException { /*InputStream in = System.in;//原始键盘 InputStreamReader isr = new InputStreamReader(in); BufferedReader br = new BufferedReader(isr);//封装类字符流*/ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); /*OutputStream out = System.out;//输出的目的是控制台 OutputStreamWriter osw = new OutputStreamWriter(out);//将字符流转换成字节流 BufferedWriter bw = new BufferedWriter(osw);*/ BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); String line = null; while ((line = br.readLine()) != null) { if ("over".equals(line)) break; bw.write("输入的内容是:" + line); bw.newLine(); bw.flush(); } } }结果:张三输入的内容是:张三李四输入的内容是:李四abc输入的内容是:abcover
2. 源:键盘 输出目的:文件
就是将键盘录入的数据写到了文件中
import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter; public class ZhuanhuanDemo { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in));// 源:键盘 BufferedWriter bw = new BufferedWriter(new OutputStreamWriter( new FileOutputStream("F:\\demo.txt")));// 目的:文件 String line = null; while ((line = br.readLine()) != null) { if ("over".equals(line)) break; bw.write(line);//写入 bw.newLine(); bw.flush(); } bw.close();// 关闭流 br.close();// 关闭流 } }
3. 源:文件 目的:控制台
将文件的内容打印在控制台上
import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter; public class ZhuanhuanDemo { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("F:\\demo.txt")));// 源:文本 BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));// 目的:控制台 String line = null; while ((line = br.readLine()) != null) { bw.write(line);//输出 bw.newLine(); bw.flush(); } bw.close();// 关闭流 br.close();// 关闭流 } }结果:张三李四王五
4. 流操作规律
1.明确源和目的
源:输入流:InputStream Reader
目的:输出流:OutputStream Writer
2.操作的数据是否是纯文本
是:字符流
不是:字节流
3.当体系明确后,在明确要使用那个具体的对象。
通过设备来进行区分:
源设备:内存,硬盘,键盘
目的内存:内存,硬盘,控制台
需求:
1.将一个文件数据存储到另一个文件中,复制文件
源:文件 使用读取流: InputStream Reader
是否是文本文件: 是:用Reader
明确对象:明确设备:硬盘中的文件FileReader对象
提高效率。利用缓冲区。BufferedReader。
FileReader fr=new FileReader(“a.txt”);
BufferedReader br=new BufferedReader(fr);
目的 :文件:OutputStream Writer
是否是纯文本:Writer
设备:硬盘中的文件
提高效率。利用缓冲区。BufferedWriter。
对象:FileWriter
FileWriter fw=new FileWriter();
BufferedWriter bw=new BufferedWriter(fw);
2.需求
将键盘录入的数据保存到另一个文件中。
源:InputStream Reader
纯文本:Reader
设备:键盘 对象 System.in
InputStreamReader idr=new InputStreamReader(System.in);
提高效率用BufferedReader
BufferedReader bufr=new BufferedReader(idr);
目的:OurStream ,Writer
纯文本:Writer
设备:硬件的文件
FileWrite fw=new FileWriter(“文件”);
BufferefWriter bufW=new BufferefWriter(fw);
要指定编码方式,必须使用转换流,OutputStreamWriter扩展:指定编码方式
OutputStreamWriter(OutputStream out,String charsetName)
OutputStreamWriter osw=new OutputStreamWriter(newFileOutputStream(“F:\\demo.txt”,”utf-8”))这制订了编码方式;
在转换流构造方法中指定。
当需要指定编码方式的时候,那么就需要此转换流OutputStreamWriter。
当需要指定编码方式的时候那么就需要转换流来操作。
当需要读取别的编码方式的文件的时候,也得需要使用转换流
字节流不用刷新缓冲区,字符流要刷新缓冲区
public class ZhuanhuanDemo { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in));// 源:键盘 /*默认的编码是jbk。*/ BufferedWriter bw = new BufferedWriter(new OutputStreamWriter( new FileOutputStream("F:\\demo1.txt"),"utf-8"));// 目的:控制台 String line = null; while ((line = br.readLine()) != null) { if ("over".equals(line)) break; bw.write(line);// 输出 bw.newLine(); bw.flush(); } bw.close();// 关闭流 br.close();// 关闭流 }
当你输入两个汉字就结束的话,那么文件大小是8个字节,要是默认的话就是6个字节,指定GBK的话,那也是6个字节,所以可以确认默认的是GBK编码。
import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter; public class ZhuanhuanDemo { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in));// 源:键盘 /*默认的编码是jbk。*/ BufferedWriter bw = new BufferedWriter(new OutputStreamWriter( new FileOutputStream("F:\\demo1.txt"),"utf-8"));// 目的:控制台 String line = null; while ((line = br.readLine()) != null) { if ("over".equals(line)) break; bw.write(line);// 输出 bw.newLine(); bw.flush(); } bw.close();// 关闭流 br.close();// 关闭流 } }
5. 改变标准输入输出设备
public static void main(String[] args) throws IOException {/* * static void setIn(InputStream in)改变输入设备 * static void setOut(PrintStream out)改变输出的设备目的 * */ System.setIn(new FileInputStream("F:\\demo.txt"));//把输入设备定义到了一个文件流上,就是源:文件 System.setOut(new PrintStream("F:\\demo1.txt"));//把输入设备定义到一个文件上,就是把内容输入到一个文件中 BufferedReader br = new BufferedReader(new InputStreamReader(System.in));// 源:键盘 /*默认的编码是jbk。*/ BufferedWriter bw = new BufferedWriter(new OutputStreamWriter( new FileOutputStream("F:\\demo1.txt"),"utf-8"));// 目的:控制台 String line = null; while ((line = br.readLine()) != null) { if ("over".equals(line)) break; bw.write(line);// 输出 bw.newLine(); bw.flush(); } bw.close();// 关闭流 br.close();// 关闭流 }
6. 异常日志文件
我们可以将程序中出现的异常保存到一个文件中,那么我就可以方便我们查看,在开发中也是把异常打印到文件中,不可能让用户看到异常。我们也可以下载logf4工具,这是专门处理异常的工具。
下面我们写一个字节的异常日志文件。
void
printStackTrace(PrintStream s)
将此 throwable 及其追踪输出到指定的输出流。
public class ExceptionDemo { public static void main(String[] args) { try { int a = 4 / 0; } catch (Exception e) { try { PrintStream ps = new PrintStream("F:\\exception.log"); SimpleDateFormat sdf = new SimpleDateFormat( "yyyy-MM-DDHH:mm:ss"); String s = sdf.format(new Date()); ps.println(s);//将日期传进入 e.printStackTrace(ps);// 将流传入,指定目的 } catch (FileNotFoundException e1) { System.out.println("日志文件创建失败"); } } } } 结果:
7.系统属性信息
系统日志
将系统的实现存到文件中
import java.io.FileNotFoundException;import java.io.PrintStream;import java.util.Properties; public class PropertiesDemo { public static void main(String[] args) { /*list(PrintStream out)将属性列表输出到指定的输出流。*/ Properties p=new Properties(); p=System.getProperties(); try { p.list(new PrintStream("F:\\SystemInfo.txt")); } catch (FileNotFoundException e) { System.out.println("创建文件失败"); } } }
--------------------ASP.Net+Android+IOS开发、.Net培训、期待与您交流! --------------------
- 黑马程序员_<<转换流(InputStreamReader,OutputStreamWriter)>>
- 黑马程序员:转换流介绍:InputStreamReader、OutputStreamWriter
- 黑马程序员_读取键盘录入和转换流(InputStreamReader类和OutputStreamWriter类)
- 转换流InputStreamReader、OutputStreamWriter
- 黑马程序员——java基础 io 转换流的应用(InputStreamReader,OutputStreamWriter)
- 转换流(OutputStreamWriter,InputStreamReader)
- InputStreamReader与OutputStreamWriter转换流
- InputStreamReader和OutputStreamWriter转换流
- 转换流(OutputStreamWriter 和 InputStreamReader )
- 处理流中的转换流。InputStreamReader & OutputStreamWriter
- 转换流--OutputStreamWriter类与InputStreamReader类
- 转换流--OutputStreamWriter类与InputStreamReader
- 转换流--OutputStreamWriter类与InputStreamReader类
- 转换流----outputStreamWriter类和inputstreamReader
- Java - IO - 转换流 - InputStreamReader - OutputStreamWriter
- 键盘录入、转换流<InputStreamReader、OutputStreamWriter>
- 转换流OutputStreamWriter和InputStreamReader简单使用
- 输入输出之转换流InputStreamReader&OutputStreamWriter
- Android ------------------线程同步
- HDOJ,杭电1237简单计算器。。。数据结构小练习。
- JZ2440 启动NFS网络文件系统_初试led驱动
- Android线程处理简述
- poj3537 Crosses and Crosses
- 黑马程序员_<<转换流(InputStreamReader,OutputStreamWriter)>>
- UVALive 6170
- 【很赞的一片文章】android获取手机号码(主要是移动手机)
- UVa 11292 Dragon of Loowater
- Android Fragment完全解析,关于碎片你所需知道的一切
- gvim插件的安装ctag、taglist、cscope(转)
- HDU 4355 Party All the Time (三分水题。。。留着TLE)
- linux目录配置
- HDU 1452 Happy 2004(因子和)