1、转换流

1.输入字节的转换流:InputStreamReader是字节流转为字符流的桥梁,可以把输入字节流转换为输入字符流
    2.输出字节流的转换流:OutputStreamWriter是字符流通向字节流的桥梁(相对于数据来说的);可以把输出字节流转换为输出字符流

2、转换流的作用

1.如果目前获取的是一个字节流需要转换为字符流,这个时候就可以使用转换流. 字节流---->字符流   
    2.使用转换流可以指定编码进行读写文件

3、实例

 package com.dhb.file;

 import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter; /**
* @author DSHORE / 2018-7-20
*
*/
public class Demo27 {
public static void main(String[] args) throws IOException {
//readTest();
//writerTest();
//writerTest2();
readTest2();
}
//使用输入字节流色转换流指定编码读取文件
public static void readTest2() throws IOException{
File file=new File("F:\\a.txt");
FileInputStream fileInputStream=new FileInputStream(file);
InputStreamReader inputStreamReader=new InputStreamReader(fileInputStream,"utf-8");
char[] buf=new char[];
int length=;
while((length=inputStreamReader.read(buf))!=-){
System.out.println(new String(buf,,length));
}
}
//使用输出字节流转换流指定编码
public static void writerTest2() throws FileNotFoundException, IOException{
File file=new File("F:\\a.txt");
//建立数据的输出通道
FileOutputStream fileOutputStream=new FileOutputStream(file);
// 可以把输出字节流转换为输出字符流
OutputStreamWriter outputStreamWriter=new OutputStreamWriter(fileOutputStream, "utf-8");
outputStreamWriter.write("你好吗!");
//关闭资源
outputStreamWriter.close();
}
//
public static void writerTest() throws FileNotFoundException, IOException{
File file=new File("F:\\a.txt");
//建立数据的输出通道
FileOutputStream fileOutputStream=new FileOutputStream(file,true);//true的作用:在文件的原有数据的末尾继续添加数据;如果不写true,原有的数据将被现在要写进去的数据替代掉。
// 可以把输出字节流转换为输出字符流
OutputStreamWriter outputStreamWriter=new OutputStreamWriter(fileOutputStream);
outputStreamWriter.write("你好吗!");
//关闭资源
outputStreamWriter.close();
} public static void readTest() throws IOException{
InputStream in=System.in;//获取标准的输入流
//System.out.println("读到的字符:"+(char)in.read());
//把字节流转换为字符流
InputStreamReader inputStreamReader=new InputStreamReader(in);
//使用字符缓冲流
BufferedReader bufferedReader=new BufferedReader(inputStreamReader);
String line=null;
while((line=bufferedReader.readLine())!=null){
System.out.println("内容:"+line);
}
}
}

原创作者:DSHORE

作者主页:http://www.cnblogs.com/dshore123/

原文出自:https://www.cnblogs.com/dshore123/p/9344716.html

欢迎转载,转载务必说明出处。(如果本文对您有帮助,可以点击一下右下角的 推荐,或评论,谢谢!

java基础53 IO流技术(转换流)的更多相关文章

  1. 【java基础】]IO流

    IO流 概念: 流的概念源于unix中管道(pipe)的概念,在unix中,管道是一条不间断的字节流,用来实现程序或进程间的通信,或读写外围设备,外部文件等 一个流,一定能够会有源和去向(目的地),他 ...

  2. java基础之IO流(二)之字符流

    java基础之IO流(二)之字符流 字符流,顾名思义,它是以字符为数据处理单元的流对象,那么字符流和字节流之间的关系又是如何呢? 字符流可以理解为是字节流+字符编码集额一种封装与抽象,专门设计用来读写 ...

  3. Java基础之IO流整理

    Java基础之IO流 Java IO流使用装饰器设计模式,因此如果不能理清其中的关系的话很容易把各种流搞混,此文将简单的几个流进行梳理,后序遇见新的流会继续更新(本文下方还附有xmind文件链接) 抽 ...

  4. 01 语言基础+高级:1-8 File类与IO流_day10【缓冲流、转换流、序列化流】

    day10[缓冲流.转换流.序列化流] 主要内容 缓冲流 转换流 序列化流 打印流 教学目标 能够使用字节缓冲流读取数据到程序 能够使用字节缓冲流写出数据到文件 能够明确字符缓冲流的作用和基本用法 能 ...

  5. 【Java基础】IO 流

    IO 流 File 类 java.io.File 类是文件和文件目录路径的抽象表示形式,与平台无关. File 能新建.删除.重命名文件和目录,但 File 不能访问文件内容本身. 如果需要访问文件内 ...

  6. java基础之IO流(一)字节流

    java基础之IO流(一)之字节流 IO流体系太大,涉及到的各种流对象,我觉得很有必要总结一下. 那什么是IO流,IO代表Input.Output,而流就是原始数据源与目标媒介的数据传输的一种抽象.典 ...

  7. Java基础学习总结(13)——流IO

    一.JAVA流式输入/输出原理 流是用来读写数据的,java有一个类叫File,它封装的是文件的文件名,只是内存里面的一个对象,真正的文件是在硬盘上的一块空间,在这个文件里面存放着各种各样的数据,我们 ...

  8. Java IO流之转换流

    一.转换流 1.在IO包中,实际上就是分为字节流和字符流,但是除了这两个流之外,还存在了一组字节流-字符流的转换流 2.转换流用于在字节流和字符流之间转换 3.转换流本身是字符流 二.两种转换流 Ou ...

  9. day1 java基础回顾-IO流

    IO流的分类 注:这几个类都是抽象类. IO解决问题: 解决设备与设备之间 的数据传输问题. 比如: 硬盘--->内存 内存----->硬盘 字节流: 输入字节流:---------| I ...

随机推荐

  1. Linux内核分析实验二:mykernel实验指导(操作系统是如何工作的)

    计算机是如何工作的?(总结)——三个法宝 存储程序计算机工作模型,计算机系统最最基础性的逻辑结构: 函数调用堆栈,高级语言得以运行的基础,只有机器语言和汇编语言的时候堆栈机制对于计算机来说并不那么重要 ...

  2. wget递归下载整站

    由于线上跑的系统还有CentOS5.4.6.4.6.5.6.5.6.6.6.8,而各镜像站维护的最早的版本已经是6.9,所以需要爬archive站点的rpm包来自建yum仓库. # wget -r - ...

  3. 解题:POI 2011 Dynamite

    题面 从零开始的DP学习系列之叁 树形DP的基本(常见?)思路:先递归进儿子,然后边回溯边决策,设状态时常设$dp[x]$表示以$x$为根的子树中(具体分析算不算$x$这个点)的情况 显然的二分答案, ...

  4. Java虚拟机性能监控与调优

    1 基于JDK命令行工具的监控 1.1 JVM的参数类型 1.1.1 标准参数 在JVM的各个版本基本上保持不变,很稳定的. -help -server -client -version -showv ...

  5. 解决Anaconda4.2 Navigator打不开的问题

    参照博客:http://blog.csdn.net/k3v1n1990s/article/details/72975528?utm_source=itdadao&utm_medium=refe ...

  6. Spss22安装与破解步骤

    Spss22安装与破解教程 向师姐请教了一些学术问题,哈哈说的有点大,不过真的很感谢,学到了很多,少走了很多弯路. 1.下载安装包 可以去IBM官网.人大论坛等网站下载,全部文件应包括spss22安装 ...

  7. kubernetes 之ingress

    www.cnblogs.com/hellojackyleon/p/8420911.html apiVersion: extensions/v1beta1 kind: Deployment metada ...

  8. JAVA 线程池基本总结

    合理利用线程池能够带来三个好处. 第一:降低资源消耗.通过重复利用已创建的线程降低线程创建和销毁造成的消耗. 第二:提高响应速度.当任务到达时,任务可以不需要等到线程创建就能立即执行. 第三:提高线程 ...

  9. P2306 被yyh虐的mzc

    P2306 被yyh虐的mzc 容量为 \(V\), 有 \(n\) 件物品, 反正直接背包绝对超时 , 每个有重量和价值 \(a_{i}, b_{i}(a_{i}, b_{i} <= 10)\ ...

  10. 使用Java API的5个技巧

    原文出处:CSDN邓帅 本文介绍了一些关于Java API安全和性能方面的简单易用的技巧,其中包括保证API Key安全和开发Web Service方面中在框架方面选择的一些建议. 程序员都喜欢使用A ...