为了账号安全,请及时绑定邮箱和手机立即绑定

标准输入流 & 转换流 & 打印流

标签:
Java

1.1 标准输入输出流
public static final InputStream in:标准输入流
public static final PrintStream out:标准输出流

package com.itheima_05;/** 标准输入输出流:                public static final InputStream in:字节输入流,用来读取键盘录入的数据                        public static final int x;                        InputStream is = System.in;                        Scanner sc = new Scanner(System.in);                public static final PrintStream out:字节输出流,将数据输出到命令行                        System.out.println();*/      public class SystemInOutDemo {}

1.2 转换流
1.2.1 OutputStreamWriter:将字节输出流转换为字符输出流
1.2.1.1 案例代码一:

  package com.itheima_05;[/font][/align][font=微软雅黑]import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.IOException;import java.io.OutputStream;import java.io.OutputStreamWriter;import java.io.Writer;/* * 需求:读取项目根目录下的SystemInOutDemo.java,并输出到命令行 * * 数据源:项目根目录下的SystemInOutDemo.java        BufferedReader * 目的地:命令行        System.out * * * 由于标准输出流是一个字节输出流,所以只能输出字节或者字节数组,但是我们读取到的数据则是字符串,如果想进行输出还需要转换成字节数组 * 我们要想通过标准输出流输出字符串,把标准输出流转换成一种字符输出流即可,OutputStreamWriter * * OutputStreamWriter(OutputStream out) :转换流,把字节输出流转换成字符输出流 * * */public class OutputStreamWriterDemo {public static void main(String[] args) throws IOException   {//method2();//创建输入流对象BufferedReader br = new BufferedReader(new FileReader("SystemInOutDemo.java"));//创建输出流对象//OutputStream os = System.out;//Writer w = new OutputStreamWriter(System.out);//多态,父类型引用指向子类对象//BufferedWriter bw = new BufferedWriter(w);BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));//进行数据的读写String line;//用于存储读取到的数据while((line = br.readLine()) != null) {bw.write(line);bw.newLine();}//释放资源bw.close();br.close();}private static void method2() throws FileNotFoundException, IOException {//创建输入流对象BufferedReader br = new BufferedReader(new FileReader("SystemInOutDemo.java"));//创建输出流对象//OutputStream os = System.out;Writer w = new OutputStreamWriter(System.out);//多态,父类型引用指向子类对象//进行数据的读写String line;//用于存储读取到的数据while((line = br.readLine()) != null) {w.write(line);w.write("\r\n");}//释放资源w.close();br.close();}private static void method() throws FileNotFoundException, IOException {//创建输入流对象BufferedReader br = new BufferedReader(new FileReader("SystemInOutDemo.java"));//创建输出流对象OutputStream os = System.out;String line;//用于存储读取到的数据while((line = br.readLine()) != null) {os.write(line.getBytes());os.write("\r\n".getBytes());}//释放资源os.close();br.close();}}

1.2.2 InputStreamReader:将字节输入流转换为字符输入流
1.2.2.1 案例代码二:

package com.itheima_05;import java.io.FileWriter;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.Reader;/* * 需求:读取键盘录入的数据,并输出到项目根目录下的a.txt文件中 * * 数据源:读取键盘录入的数据        System.in * 目的地:项目根目录下的a.txt        FileWriter * * * * 转换流:需要把字节输入流转换成字符输入流,InputStreamReader * InputStreamReader(InputStream in) */public class InputStreamReaderDemo {public static void main(String[] args) throws IOException  {//创建输入流对象InputStream is = System.in;Reader r = new InputStreamReader(is);//创建输出流对象FileWriter fw = new FileWriter("a.txt");//读写数据char[] chs = new char[1024];int len;while((len = r.read(chs)) != -1) {fw.write(chs,0,len);fw.flush();}//释放资源fw.close();is.close();}private static void method() throws IOException {//创建输入流对象InputStream is = System.in;//创建输出流对象FileWriter fw = new FileWriter("a.txt");//读写数据byte[] bys = new byte[1024];int len;//用于存储读取到的字节个数while((len = is.read(bys)) != -1) {fw.write(new String(bys,0,len));fw.flush();}//释放资源fw.close();is.close();}}

1.3 打印流
打印流添加输出数据的功能,使它们能够方便地打印各种数据值表示形式.
字符打印流        PrintWriter
void print(String str): 输出任意类型的数据,
void println(String str): 输出任意类型的数据,自动写入换行操作
1.3.1 案例代码三:

package com.itheima_06;import java.io.FileNotFoundException;import java.io.IOException;import java.io.PrintWriter;/* * 打印流: * PrintStream * PrintWriter * 可以自动换行,println() * 不能输出字节,但是可以输出其他任意类型 * 通过某些配置,可以实现自动刷新(只有在调用 println、printf 或 format才有用) * 也是包装流,不具备写出功能 * 可以把字节输出流转换成字符输出流 * * 注意:只能输出不能输入 * *  */public class PrintWriterDemo {public static void main(String[] args) throws IOException  {//创建打印流对象PrintWriter pw = new PrintWriter("b.txt");//写出数据pw.write("hello");pw.write("world");pw.write("java");//释放资源pw.close();}}

1.3.2 案例代码四:
利用打印流实现自动换行与自动更新

package com.itheima_06;[/font][/align] [font=微软雅黑]import java.io.FileNotFoundException;import java.io.FileWriter;import java.io.IOException;import java.io.PrintWriter;/* * 打印流的特有功能: * 自动换行 使用方法println()实现自动换行 * 自动刷新  创建PrintWriter对象时启动自动刷新开关,并且使用println等3个方法可以实现自动刷新 * * 注意:创建FileWriter对象时boolean参数是是否追加, * 而创建打印流对象的boolean类型参数是是否自动刷新 */public class PrintWriterDemo2 {public static void main(String[] args) throws IOException  {//method();//创建打印流对象//PrintWriter pw = new PrintWriter("d.txt");PrintWriter pw = new PrintWriter(new FileWriter("d.txt"),true);pw.println("hello");pw.println("world");pw.println("java");//释放资源//pw.close();}private static void method() throws FileNotFoundException {//创建打印流对象PrintWriter pw = new PrintWriter("c.txt");/*pw.write("hello");pw.write("world");pw.write("java");*/pw.print("hello");pw.println("world");pw.println("java");//释放资源pw.close();}}

1.3.3 案例代码五:
利用打印流将根目录下的SystemInOutDemo.java复制到d:\SystemInOutDemo.java下

package com.itheima_06;import java.io.BufferedReader;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import java.io.PrintWriter;/* * 使用打印流复制文本文件 * * 数据源        SystemInOutDemo.java        BufferedReader * 目的地        d:\\SystemInOutDemo.java        PrintWriter * */public class PrintWriterDemo3 {public static void main(String[] args) throws IOException  {//创建输入流对象BufferedReader br = new BufferedReader(new FileReader("SystemInOutDemo.java"));//创建打印流对象PrintWriter pw = new PrintWriter(new FileWriter("d:\\SystemInOutDemo.java"),true);String line;//用于存储读取到的每行数据while((line = br.readLine()) != null) {pw.println(line);}//释放资源

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消