计算机都是以二进制码格式存储文件的,但是在读写文件的过程中,每个应用程序都有自己的编码格式。FileWrite和FileRead类是通过查询系统默认码表进行读写的,因此在自己的系统上能够实现编码的智能化。但是在进行程序开发的时候,我们需要统一用户交互的编码,这个时候,就需要用到字符转换流了,FileWrite和FileRead类就不够用了

一、OutputStreamWriter

1.构造方法

OutputStreamWriter(OutputStream out)

OutputStreamWriter(OutputStream out, Charset cs)

OutputStreamWriter(OutputStream out, CharsetEncoder enc)

OutputStreamWriter(OutputStream out, String charsetName)

2.常用方法

void close() ===> 关闭流,先刷新

void flush() ===> 刷新流

String getEncoding() ===> 返回此流使用的字符编码的名称

void write(char[] cbuf, int off, int len) ===> 写入字符数组的一部分

void write(int c) ===> 写一个字符

void write(String str, int off, int len) ===> 写一个字符串的一部分

3.使用方法

import java.io.*;

public class CharType {
public static void main(String[] args) throws IOException { OutputStreamWriter file = new OutputStreamWriter(new FileOutputStream("F:\\utf-8.txt"),"utf-8");
file.write("这是utf-8格式的字符");
file.flush();
file.close();
}
}
} 注意:
不指定格式时,默认使用utf-8

二、InputStreamReader

1.构造方法

InputStreamReader(InputStream in)

InputStreamReader(InputStream in, Charset cs)

InputStreamReader(InputStream in, CharsetDecoder dec)

InputStreamReader(InputStream in, String charsetName)

2.常用方法

void close() ===> 关闭流并释放与之相关联的任何系统资源

String getEncoding() ===> 返回此流使用的字符编码的名称

int read() ===> 读一个字符

int read(char[] cbuf, int offset, int length) ===> 将字符读入数组的一部分

boolean ready() ===> 告诉这个流是否准备好被读取

3.使用方法

import java.io.*;

public class CharType {
public static void main(String[] args) throws IOException { FileInputStream fileTemp = new FileInputStream("F:\\utf-8.txt");
InputStreamReader file = new InputStreamReader(fileTemp,"utf-8");
int len = 0;
while ((len = file.read()) != -1){
System.out.print((char)len);
}
}
} 注意:
不指定格式时,默认使用utf-8

Java第三十三天,IO操作(续集),字符转换流的更多相关文章

  1. “全栈2019”Java第三十三章:方法

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  2. Java文件与io——复制文件和转换流

    字节流与字符流的区别 在所有的流操作里,字节永远是最基础的.任何基于字节的操作都是正确的.无论是文本文件还是二进制的文件. 如果确认流里面只有可打印的字符,包括英文的和各种国家的文字,也包括中文,那么 ...

  3. Java:IO流-流的操作规律和转换流

    首先我们先来了解一些IO流基本知识. 一,基本知识概括 具体的IO流有很多种,针对不同的应用场景应该使用相应的流对象.但怎么确定应该使用哪个IO流对象呢? 一般要有四个明确: 1)明确源和目的 源:I ...

  4. Java IO输入输出流 字符数组流 ByteArrayOutputStream/ByteArrayInputStream

    private static void StringWriterAndReader() throws Exception { //字符串流(字符串的内存流) //字符串输入流 StringWriter ...

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

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

  6. JAVA-IO操作,字节-字符转换流

    掌握OutputStreamWriter和InputStreamReader类的作用 一般操作输入输出内容的时候,就需要使用字节或字符流,但是,有些时候,需要将字符流变成字节流形式,或者字节流变成字符 ...

  7. IO(七)----转换流

    输入字节流的转换流:InputStreamReader 是字节流通向字符流的桥梁. 输出字节流的转换流:OutputStreamWriter  可以把输出字节流转换成输出字符流 .  是符流通向字节流 ...

  8. Java进击C#——语法之IO操作

    本章简言 上一章我们对线程同步进行讲解.了解如何去处理可能发生的脏数据.而本章就要讲有关于C#在读取IO文件的时候,常常用到的操作类.这一章的内容会比较少.但是笔者还是总结出来让读者们有一个学习的方向 ...

  9. Java进阶(三十三)java基础-filter

    java基础-filter 我们先看看没有filter的时候,整个web客户端-服务端的一个流程. 接下来我们再看看引入了filter之后的Uml图.尝试分析这两者之间的差别. filter从哪里来? ...

随机推荐

  1. js 拖拽实现面向对象

    1.js 支持面向对象编程,但只是基于面向对象,不使用类或者接口.2.演变 工厂模式------->构造函数模式---------->原型模式 工厂模式的缺点: ①函数内部new ,不太符 ...

  2. yarn报错error An unexpected error occurred:****ETIMEDOUT

    起因 在一个美好的下午,我敲击键盘输入quasar create Tangerine_Reception 我自豪的使用yarn作为包管理器,本以为万事无忧,不用担心出现npm的种种异常了...... ...

  3. Android位置服务开发

    1. 使用LocationManager获取地理位置信息 代码如下: private TextView positiontext; private String provider; private L ...

  4. 作为一位Vue工程师,这些开发技巧你都会吗?

    路由参数解耦 一般在组件内使用路由参数,大多数人会这样做: export default { methods: { getParamsId() { return this.$route.params. ...

  5. VMware 虚拟机正在使用中

    1.出现报错信息: 2.找到安装目录下面的.lck后缀文件夹(如有多个则全部删除) 3.删除此文件夹 4.成功开启虚拟机

  6. tomcat源码分析01-启动过程概览

    导读:tomcat是一个开源的web服务器,它实现了我们常用的Servlet,JSP,EL等相关规范,因为其性能稳定,开源等因素得到越来越多开发者的青睐,出于学习的目的,我决定研读其源码,并将阶段性成 ...

  7. Android项目目录结构模板以及简单说明

    1) src  文件 编写java代码的文件目录,遵循java的命名规范.分包 2) gen  文件      包含了android的资源文件的标识符,是不需要程序员维护,是自动添加的 3) asse ...

  8. go语言周边

    博主收藏的go语言资料,分享一波~~~ 官网 https://golang.org/ (被墙) 镜像: http://docscn.studygolang.com/ 下载镜像: https://gom ...

  9. type=file 文件修改表单 名称不能正常回显的问题

     easyui 框架下   代码如下: css: .file_box{ float: right; width: 1035px; border: 1px solid #999; height: 32p ...

  10. stm32CubeMx+TrueSTUDIO+uc/os-III移植开发(二)

    (三)复制相关文件 (1)继上次的代码生成后会显示如下的图 点击第一个,打开文件夹如下 (2)新建文件夹UCOSIII 在UCOSIII文件夹下,新建如下的文件夹 (3)将uc/os源文件中 Micr ...