转换流: 把字节输出流转换成字符输出流

标准输入输出流:传输的对象是字节流 System.in 、 System.out

标准输入输出流

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();

  

转换流

import java.io.*;

/*
* 需求:读取键盘录入的数据,并输出到项目根目录下的a.txt文件中
*
* 数据源:读取键盘录入的数据 System.in(字节流)
* 目的地:项目根目录下的a.txt FileWriter(字符流)
*
*
*
* 转换流:需要把字节输入流转换成字符输入流,InputStreamReader
* InputStreamReader(InputStream in)
* InputStreamReader 是字节流通向字符流的桥梁
*/
public class InputStreamReaderDemo {
public static void main(String[] args) throws IOException {
// method();
// method2();
method3(); } //输入 字节转字符
//输出 字符
private static void method3() throws IOException {
//创建输入流对象
InputStream ips = System.in;
InputStreamReader ipr = new InputStreamReader(ips); //创建输出流对象
FileWriter fw = new FileWriter("io.txt"); char[] chs = new char[1024];
int len;
while ((len=ipr.read(chs))!=-1) {
fw.write(chs,0,len);
fw.flush();
} fw.close();
ipr.close();
} //输入 字节
//输出 字符(输出时字节转字符串)
private static void method2() throws IOException {
InputStream ips = System.in;
FileWriter fw = new FileWriter("io.txt"); byte[] by = new byte[1024];
int len;
while ((len=ips.read(by))!=-1) {
fw.write(new String(by,0,len)); //String(byte[] bytes) String类的构造方法把字节数据封装成字符串对象
fw.flush();
} fw.close();
ips.close();
} //字节输入
//字节输出
private static void method() throws IOException {
//数据源
InputStream ips = System.in;
//目的地
OutputStream fos = new FileOutputStream("io.txt"); byte[] by = new byte[1024];
int len;
while ((len=ips.read(by))!=-1) {
fos.write(by,0,len);
fos.flush();
} //释放资源
ips.close();
fos.close();
}
}
import java.io.*;

/*
* 需求:读取项目根目录下的SystemInOutDemo.java,并输出到命令行
* 数据源:项目根目录下的SystemInOutDemo.java BufferedReader
* 目的地:命令行 System.out
*
*
*
* 由于标准输出流是一个字节输出流,所以只能输出字节或者字节数组,但是我们读取到的数据则是字符串,如果想进行输出还需要转换成字节数组
* 我们要想通过标准输出流输出字符串,把标准输出流转换成一种字符输出流即可,OutputStreamWriter
*
* OutputStreamWriter(OutputStream out) :转换流,把字节输出流转换成字符输出流
*
*
*/
public class OutputStreamWriterDemo {
public static void main(String[] args) throws IOException {
// method(); //源端:文本文件
/*FileReader fr = new FileReader("io.txt");
BufferedReader br = new BufferedReader(fr);*/
BufferedReader br = new BufferedReader(new FileReader("io.txt")); //目的地:命令行
/*OutputStream ops = System.out;
Writer opw = new OutputStreamWriter(ops);
BufferedWriter bw = new BufferedWriter(opw);*/
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); String line;
while((line=br.readLine())!=null) {
bw.write(line);
bw.newLine();
} //释放资源
br.close();
bw.close(); } //读取 字符
// 输出 字符转字节(System.out是字节流)
private static void method() throws IOException {
BufferedReader br = new BufferedReader(new FileReader("io.txt"));
OutputStream os = System.out; /*当读到最后一行后下一行返回null
System.out.println(br.readLine());
System.out.println(br.readLine());
System.out.println(br.readLine());*/
String line;
while ((line=br.readLine())!=null) {
os.write(line.getBytes());
os.write("\r\n".getBytes());
os.flush();
} os.close();
br.close();
}
}

34.3 转换流 InputStreamReader OutStreamReader的更多相关文章

  1. (25)IO流之转换流InputStreamReader和OutputStreamWriter

    InputStreamReader:字节到字符的桥梁. OutputStreamWriter:字符到字节的桥梁. 它们有转换作用,而本身又是字符流.所以在构造的时候,需要传入字节流对象进来. 构造函数 ...

  2. JAVA之旅(二十七)——字节流的缓冲区,拷贝mp3,自定义字节流缓冲区,读取键盘录入,转换流InputStreamReader,写入转换流,流操作的规律

    JAVA之旅(二十七)--字节流的缓冲区,拷贝mp3,自定义字节流缓冲区,读取键盘录入,转换流InputStreamReader,写入转换流,流操作的规律 我们继续来聊聊I/O 一.字节流的缓冲区 这 ...

  3. 转换流InputStreamReader & OutputStreamWriter

    转换流InputStreamReader & OutputStreamWriter 比如当使用FileReader读取文件时,可以读取IDE默认的UTF-8编码的文件,但是当有一个文件是GBK ...

  4. 转换流--InputStreamReader ,OutputStreamWriter

    BufferedReader 字符流,只能装饰字符流,不能装饰字节流.有个重要且好用的方法是readLine()整行读取字符. 但是InputStream是字节流,没有resdLine方法,那么字节流 ...

  5. 转换流 InputStreamReader

    通常接触到字节流和字符流,但是有一个流是这两个流的桥梁,inputStreamReader 字符流的结构如下 可以看到inputStreamReader是继承Reader ,它的子类是FileRead ...

  6. Java IO流学习总结五:转换流-InputStreamReader、OutputStreamWriter

    类的继承关系 Reader |__ BufferedReader.StringReader.InputStreamReader |__ FileReader Writer |__ BufferedWr ...

  7. io流之转换流InputStreamReader、OutputStreamWriter

    例子程序: package io; import java.io.BufferedReader; import java.io.FileInputStream; import java.io.File ...

  8. [19/04/02-星期二] IO技术_字符流分类总结(含字符转换流InputStreamReader/ OutputStreamWriter,实现字节转字符)

    一.概念 ------->1.BufferedReader/BufferedWriter [参考19.03.31文章] *Reader/Writer-------->2.InputStre ...

  9. Java IO 流 -- 转换流: InputStreamReader OutputStreamWriter

    java 中 转换流是以字符流的形式操作字节流,需要注意一下两点: 1.操作内容必须是纯文本 2.指定字符集避免乱码 操作控制台输入输出: try (BufferedReader br = new B ...

随机推荐

  1. Swift 4.0 数组(Array)之过滤器(filter)的使用

    我们先来定义一个常量整型数组 let array = [5, 4, 3, 1, 2] 过滤器(filter)使用之筛选出大于3的值 let resultArray = array.filter { ( ...

  2. Java 14 发布了,再也不怕 NullPointerException 了!

    2020年3月17日发布,Java正式发布了JDK 14 ,目前已经可以开放下载.在JDK 14中,共有16个新特性,本文主要来介绍其中的一个特性:JEP 358: Helpful NullPoint ...

  3. 目标检测 | 经典算法 Cascade R-CNN: Delving into High Quality Object Detection

    作者从detector的overfitting at training/quality mismatch at inference问题入手,提出了基于multi-stage的Cascade R-CNN ...

  4. Volatile关键字回顾之线程可见性

    java中,volatile关键字有两大作用: 1.保证线程的可见性 2.防止指令重排序 这篇文章主要通过典型案例,体现可见性这一特性. 概念: java中,堆内存是线程共享的.而每个线程,都应该有自 ...

  5. java简单序列化和反序列化

    一.序列流 1.什么是序列流 序列流可以把多个字节输入流整合成一个, 从序列流中读取数据时, 将从被整合的第一个流开始读, 读完一个之后继续读第二个, 以此类推. 2.使用方式 整合两个: Seque ...

  6. redis中setbit bitcount命令详解

    bitmap,位图,即是使用bit. redis字符串是一个字节序列. 1 Byte = 8 bit SETBIT key offset value 设置或者清空key的value(字符串)在offs ...

  7. sql-lib闯关21-30

    第二十一关 base64编码,单引号,报错型,cookie型注入. 本关和less-20相似,只是cookie的uname值经过base64编码了,下图为我们输入万能密码显示 uname = YWRt ...

  8. 一书吃透机器学习!新版《机器学习基础》来了,教材PDF、PPT可下载 | 资源

    不出家门,也能学习到国外高校的研究生机器学习课程了. 今天,一本名为Foundations of Machine Learning(<机器学习基础>)的课在Reddit上热度飙升至300, ...

  9. php基本数据类型解说

    一.简介: php语言是弱类型语言,声明变量的时候不需要指定数据类型.但每个数值都是有数据类型的.PHP共有九种数据类型. php基本数据类型共有四种:boolean(布尔型),integer(整型) ...

  10. iOS 图片圆角性能

    通常设置圆角方式 imageView.clipsToBounds = YES; imageView.layer.cornerRadius = 50; 这样设置会触发离屏渲染,比较消耗性能.比如当一个页 ...