Java第三十三天,IO操作(续集),字符转换流
计算机都是以二进制码格式存储文件的,但是在读写文件的过程中,每个应用程序都有自己的编码格式。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操作(续集),字符转换流的更多相关文章
- “全栈2019”Java第三十三章:方法
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- Java文件与io——复制文件和转换流
字节流与字符流的区别 在所有的流操作里,字节永远是最基础的.任何基于字节的操作都是正确的.无论是文本文件还是二进制的文件. 如果确认流里面只有可打印的字符,包括英文的和各种国家的文字,也包括中文,那么 ...
- Java:IO流-流的操作规律和转换流
首先我们先来了解一些IO流基本知识. 一,基本知识概括 具体的IO流有很多种,针对不同的应用场景应该使用相应的流对象.但怎么确定应该使用哪个IO流对象呢? 一般要有四个明确: 1)明确源和目的 源:I ...
- Java IO输入输出流 字符数组流 ByteArrayOutputStream/ByteArrayInputStream
private static void StringWriterAndReader() throws Exception { //字符串流(字符串的内存流) //字符串输入流 StringWriter ...
- [19/04/02-星期二] IO技术_字符流分类总结(含字符转换流InputStreamReader/ OutputStreamWriter,实现字节转字符)
一.概念 ------->1.BufferedReader/BufferedWriter [参考19.03.31文章] *Reader/Writer-------->2.InputStre ...
- JAVA-IO操作,字节-字符转换流
掌握OutputStreamWriter和InputStreamReader类的作用 一般操作输入输出内容的时候,就需要使用字节或字符流,但是,有些时候,需要将字符流变成字节流形式,或者字节流变成字符 ...
- IO(七)----转换流
输入字节流的转换流:InputStreamReader 是字节流通向字符流的桥梁. 输出字节流的转换流:OutputStreamWriter 可以把输出字节流转换成输出字符流 . 是符流通向字节流 ...
- Java进击C#——语法之IO操作
本章简言 上一章我们对线程同步进行讲解.了解如何去处理可能发生的脏数据.而本章就要讲有关于C#在读取IO文件的时候,常常用到的操作类.这一章的内容会比较少.但是笔者还是总结出来让读者们有一个学习的方向 ...
- Java进阶(三十三)java基础-filter
java基础-filter 我们先看看没有filter的时候,整个web客户端-服务端的一个流程. 接下来我们再看看引入了filter之后的Uml图.尝试分析这两者之间的差别. filter从哪里来? ...
随机推荐
- vue组件通信(props,$emit,$attrs,$listeners)
朝颜陌 vue基础----组件通信(props,$emit,$attrs,$listeners) 一.父传子,子传孙 1. props 1>在父组件中通过子组件自定义的标签属性来传递数据. ...
- created:异步初始化数据都应该放到 created里面
created:异步初始化数据都应该放到 created里面
- 动手建立jdbc连接
工具:Idea Navicat 环境:jdk 1.8 mysql-5.7.27-winx64 创建一个project 打开navicat开启连接. 在idea中导入数据库. 导入好后可以开始连接了 ...
- 正则匹配电话号码demo
public static String doFilterTelnum(String sParam) { String result = sParam; if (sParam.length() < ...
- Css盒模型属性详解(margin和padding)
Css盒模型属性详解(margin和padding) 大家好,我是逆战班的一名学员,今天我来给大家分享一下关于盒模型的知识! 关于盒模型的属性详解及用法 盒模型基本属性有两个:padding和marg ...
- 分享macOS平台好用的视频分割、合并视频、提取音频、分离音频、音频转码的工具CCVideo
CCVideo 是一款运行在macOS上可分割视频(可多段分割).合并视频.提取音频.分离音频.音频转码的工具,操作方便,只需简单几步,便可轻松完成. 下载地址
- ElegantSnap 一个优雅的,易用的iOS/tvOS/macOS自动布局框架, 超级详细的使用教程,多视图水平等宽/垂直等高排列
ElegantSnap ElegantSnap(Base on SnapKit) to make Auto Layout easy and elegant on both iOS and OS X. ...
- leetcode 876. 链表的中间结点 签到
题目: 给定一个带有头结点 head 的非空单链表,返回链表的中间结点. 如果有两个中间结点,则返回第二个中间结点. 示例 1: 输入:[1,2,3,4,5] 输出:此列表中的结点 3 (序列化形式: ...
- 02 Python函数与模块
• 函数是什么 print() input() format() list() lower() upper() • 函数的定义 def 函数名(形参1,2,3) 函数体 return • 函数 ...
- 强化学习之三点五:上下文赌博机(Contextual Bandits)
本文是对Arthur Juliani在Medium平台发布的强化学习系列教程的个人中文翻译,该翻译是基于个人分享知识的目的进行的,欢迎交流!(This article is my personal t ...