Java IO学习笔记三
Java IO学习笔记三
- 在整个
IO包中,实际上就是分为字节流和字符流,但是除了这两个流之外,还存在了一组字节流-字符流的转换类。
OutputStreamWriter:是Writer的子类,将输出的字符流变为字节流,即:将一个字符流的输出对象变成字节流的输出对象。
InputStreamReader:是Reader的子类,将输入的字节流变为字符流,即:将一个字节流的输入对象变成字符流的输入对象。
- 一般在操作输入输出内容就需要使用字节或字符流,但是有些时候需要将字符流变成字节流的形式,或者将字节流变为字符流的形式,所以,就需要另外一组转换流的操作类。
InputStreamReader
InputStreamReader是字节流通向字符流的桥梁:它使用指定的charset读取字节并将其解码为字符。它使用的字符集可以由名称指定或显式给定,或者可以接受平台默认的字符集。
- 每次调用
InputStreamReader中的一个read()方法都会导致从底层输入流读取一个或多个字节。要启用从字节到字符的有效转换,可以提前从底层流读取更多的字节,使其超过满足当前读取操作所需的字节。
- 主要的功能还是从文件中读取内容,不过是一次性的读取多个字节,这个很像它的子类
FileReader
构造函数
InputStreamReader(InputStream in)创建一个使用默认字符集的InputStreamReader,不过这里的InputStream是抽下类,因此可以使用它的子类FileInputStream实例化,这里的FileInputStream是操作字节流的,显然看出这个类的作用就是字符流和字节流的桥梁
常用方法
close()int read()读取单个字符int read(Char[] c)读取字符存储在字符数组中int read(char[] cbuf, int offset, int length)将字符读入数组中的某一部分boolean ready()判断此流是否已经准备好用于读取。
实例
package IO;
import java.io.*;
/**
* Created by chenjiabing on 17-5-24.
*/
public class demo4 {
public static void main(String args[]) {
File file = new File("/tmp" + File.separator + "test" + File.separator + "test.txt");
InputStreamReader inputStreamReader = null;
try {
inputStreamReader = new InputStreamReader(new FileInputStream(file)); //初始化
char[] c = new char[(int) file.length()]; //创建数组
try {
int len = inputStreamReader.read(c); //将内容读取到数组中
System.out.println(len);
for (int i = 0; i < c.length; i++) {
System.out.print(c[i]);
}
} catch (IOException e) {
e.printStackTrace();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}finally {
if(inputStreamReader!=null)
{
try {
inputStreamReader.close(); //关闭
}catch (IOException e)
{
e.printStackTrace();
}
}
}
}
}
注意:从上面的代码中可以看到这个和
FileReader的操作是一样的,只是构造的方法不一样
OutputStreamWriter
OutputStreamWriter是字符流通向字节流的桥梁:可使用指定的 charset 将要写入流中的字符编码成字节。它使用的字符集可以由名称指定或显式给定,否则将接受平台默认的字符集。
- 每次调用
write()方法都会导致在给定字符(或字符集)上调用编码转换器。在写入底层输出流之前,得到的这些字节将在缓冲区中累积。可以指定此缓冲区的大小,不过,默认的缓冲区对多数用途来说已足够大。注意,传递给write()方法的字符没有缓冲。
- 主要的功能还是向文件中写入文件
构造函数
OutputStreamWriter(OutputStream out)创建使用默认字符编码的OutputStreamWriter。这里同样是抽象类,所以用它的子类FileOutputStream实例化
常用方法
close()flush()write(String str)写入字符串void write(String str, int off, int len)写入字符串的某一部分。write(int c)写入单个字符void write(char[] cbuf, int off, int len)写入字符数组的某一部分。
实例
package IO;
import java.io.*;
/**
* Created by chenjiabing on 17-5-24.
*/
public class demo5 {
public static void main(String[] args)
{
File file=new File("/tmp"+File.separator+"test"+File.separator+"test.txt");
OutputStreamWriter outputStreamWriter=null;
try {
outputStreamWriter=new OutputStreamWriter(new FileOutputStream(file,true));
String str="陈加兵\n";
int data=48;
String name="chenjiabing";
try {
outputStreamWriter.write(str);
outputStreamWriter.write(data);
outputStreamWriter.write(name,0,2); //写入字符串的一部分
}catch (IOException e)
{
e.printStackTrace();
}
}catch (FileNotFoundException e)
{
e.printStackTrace();
}finally {
if(outputStreamWriter!=null)
{
try {
outputStreamWriter.flush();
outputStreamWriter.close();
}catch (IOException e)
{
e.printStackTrace();
}
}
}
}
}
从上面可以看出
OutputStreamWriter和FileWriter的用法一样
参考文章
Java IO学习笔记三的更多相关文章
- Java IO学习笔记三:MMAP与RandomAccessFile
作者:Grey 原文地址:Java IO学习笔记三:MMAP与RandomAccessFile 关于RandomAccessFile 相较于前面提到的BufferedReader/Writer和Fil ...
- Java IO学习笔记:概念与原理
Java IO学习笔记:概念与原理 一.概念 Java中对文件的操作是以流的方式进行的.流是Java内存中的一组有序数据序列.Java将数据从源(文件.内存.键盘.网络)读入到内存 中,形成了 ...
- Java IO学习笔记二
Java IO学习笔记二 流的概念 在程序中所有的数据都是以流的方式进行传输或保存的,程序需要数据的时候要使用输入流读取数据,而当程序需要将一些数据保存起来的时候,就要使用输出流完成. 程序中的输入输 ...
- Java IO学习笔记二:DirectByteBuffer与HeapByteBuffer
作者:Grey 原文地址:Java IO学习笔记二:DirectByteBuffer与HeapByteBuffer ByteBuffer.allocate()与ByteBuffer.allocateD ...
- Java IO学习笔记四:Socket基础
作者:Grey 原文地址:Java IO学习笔记四:Socket基础 准备两个Linux实例(安装好jdk1.8),我准备的两个实例的ip地址分别为: io1实例:192.168.205.138 io ...
- Java IO学习笔记五:BIO到NIO
作者:Grey 原文地址: Java IO学习笔记五:BIO到NIO 准备环境 准备一个CentOS7的Linux实例: 实例的IP: 192.168.205.138 我们这次实验的目的就是直观感受一 ...
- Java IO学习笔记七:多路复用从单线程到多线程
作者:Grey 原文地址:Java IO学习笔记七:多路复用从单线程到多线程 在前面提到的多路复用的服务端代码中, 我们在处理读数据的同时,也处理了写事件: public void readHandl ...
- Java IO学习笔记总结
Java IO学习笔记总结 前言 前面的八篇文章详细的讲述了Java IO的操作方法,文章列表如下 基本的文件操作 字符流和字节流的操作 InputStreamReader和OutputStreamW ...
- Java IO学习笔记一
Java IO学习笔记一 File File是文件和目录路径名的抽象表示形式,总的来说就是java创建删除文件目录的一个类库,但是作用不仅仅于此,详细见官方文档 构造函数 File(File pare ...
随机推荐
- [周译见] C# 7 中的模范和实践
原文地址:https://www.infoq.com/articles/Patterns-Practices-CSharp-7 关键点 遵循 .NET Framework 设计指南,时至今日,仍像十年 ...
- ListView在异步加载动态图片时,往往最后一项或几项被遮盖(IM场景居多)
如果ListView中得默认图片比较小,新图片加载后,撑大ListView中的对应项,导致最后一项或几项被覆盖. 解决思路: 1.默认图片设定和新图大小一样,换句话说,新图加载后转成和默认图片一样的大 ...
- iOS 发布证书提示 此证书的签发者无效 解决办法
1. 打开钥匙串 查看发布证书 都是提示 此证书的签发者无效 解决办法 : 2. 到了 第 4 步骤 再去 查看 发布证书 就会 显示 此证书有效 3. 如果还不可以 就 把 Apple W ...
- Kafka学习-入门
在上一篇kafka简介的基础之上,本篇主要介绍如何快速的运行kafka. 在进行如下配置前,首先要启动Zookeeper. 配置单机kafka 1.进入kafka解压目录 2.启动kafka bin\ ...
- VR全景智慧城市——“海市蜃楼”般的逛街体验
<史记·天官书>:"海旁蜃气像楼台:广野气成宫阙然." 海市蜃楼,简称蜃景,是一种因为光的折射和全反射而形成的自然现象,是地球上物体反射的光经大气折射而形成的虚像. 2 ...
- 使用Java语言开发微信公众平台(七)——音乐消息的回复
在上一节课程中,我们学习了图片消息的回复功能.根据微信公众平台的消息类型显示,微信共支持文本.图片.语音.视频.音乐.图文等6种消息类型的回复: 其中,我们已经实现了文本.图文.图片等消息的回复处理, ...
- Appium 1.6.4 环境搭建流程(Java, Android+IOS, Windows+Mac)
Appium1.6.4已经出来一段时间了,快速给大家串一下怎么搭建,贴了下载链接 1 基础环境: Windows + Mac: Java JDK 1.8+ (需配置环境变量),Appium1.6.4的 ...
- .Net程序员学用Oracle系列(7):视图、函数、存储过程、包
1.视图 1.1.创建.删除及调用普通视图 1.2.高级视图介绍 2.函数 2.1.系统函数介绍 2.2.创建.删除及调用自定义函数 3.存储过程 3.1.创建.修改及删除存储过程 3.2.调用存储过 ...
- HttpGet和HttpPost
package net.blogjava.mobile; import java.net.HttpURLConnection; import java.util.ArrayList; import j ...
- WannaflyUnion每日一题
---恢复内容开始--- 1. http://www.spoj.com/problems/KAOS/ 题意:给定n个字符串,统计字符串(s1, s2)的对数,使得s1的字典序比s2的字典序要大,s1反 ...