Java学习笔记29(IO字符流,转换流)
字符流:只能操作文本文件,与字节流的区别是,字节流是按照字节来读取文件,而字符流是按照字符来读取,因此字符流的局限性为文本文件
字符输出流:Write类,使用时通过子类 每一次写入都要刷新
package com.zs; import java.io.FileWriter;
import java.io.IOException; public class Demo3 {
public static void main(String[] args) throws IOException {
FileWriter fw=new FileWriter("d:\\c.txt");
fw.write(101);//输入数字自动编码
fw.flush();//字符流每次操作都要使用flush方法刷新
char[] ch={'a','b','c'};
fw.write(ch);//输入数组,写字符数组
fw.flush();
fw.write(ch,0,2);//写部分字符数组选则的字符
fw.write("hello java");//可以直接写字符串
fw.close();
}
}
字符输入流:Reader类,通过子类
package com.zs.Demo2; import java.io.FileReader;
import java.io.IOException; public class Demo2 {
public static void main(String[] args) throws IOException {
FileReader fr=new FileReader("d:\\c.txt");
int len=0;
while((len=fr.read())!=-1){//一个字符一个字符的读
System.out.println((char)len);
}
fr.close();
FileReader fr1=new FileReader("d:\\c.txt");
char[] c=new char[1024];//用字符数组读数据,加快速度
while((len=fr1.read(c))!=-1){
System.out.println(new String(c,0,len));
}
fr.close();
}
}
复制文件:与字节流相似,需要注意每次写入后都要刷新
package com.zs.Demo2; import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException; public class CopyFileByChar {
public static void main(String[] args) {
FileReader fr=null;
FileWriter fw=null;
try {
fr=new FileReader("d:\\c.txt");
fw=new FileWriter("e:\\c.txt");
int len;
char[] c=new char[1024];
while((len=fr.read(c))!=-1){
fw.write(c,0,len);
fw.flush();
}
} catch (IOException e) {
throw new RuntimeException("复制失败");
}finally {
if (fw != null) {
try {
fw.close();
} catch (IOException e) {
throw new RuntimeException("释放资源失败");
}finally {
if (fr != null) {
try {
fr.close();
} catch (IOException e) {
throw new RuntimeException("释放资源失败");
}
}
}
}
}
}
}
转换流:字符流和字节流之间的桥梁
OutputStreamWriter类:字符转字节
package com.zs.Demo2; import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter; public class CharToByte {
public static void main(String[] args) throws IOException {
FileOutputStream fo=new FileOutputStream("d:\\d.txt");
//OutputStreamWriter(字节流对象,编码格式);
OutputStreamWriter fw=new OutputStreamWriter(fo,"utf-8");
fw.write("你好");//这里本来d盘时字节流输入的,可以使用字符流输入字符串;
fw.close();
}
}
InputStreamReader:字节转字符
package com.zs.Demo2; import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader; public class ByteToChar {
public static void main(String[] args) throws IOException {
FileInputStream fi=new FileInputStream("d:\\d.txt");
InputStreamReader fr=new InputStreamReader(fi,"utf-8");
char[] c=new char[1024];
int len=0;
while((len=fr.read(c))!=-1){
System.out.println(new String(c,0,len));//你好
}
}
}
注意读取文本的编码格式要一致
Java学习笔记29(IO字符流,转换流)的更多相关文章
- java学习笔记之IO编程—字节流和字符流
1. 流的基本概念 在java.io包里面File类是唯一一个与文件本身有关的程序处理类,但是File只能够操作文件本身而不能操作文件的内容,或者说在实际的开发之中IO操作的核心意义在于:输入与输出操 ...
- java学习笔记之IO编程—内存流、管道流、随机流
1.内存操作流 之前学习的IO操作输入和输出都是从文件中来的,当然,也可以将输入和输出的位置设置在内存上,这就需要用到内存操作流,java提供两类内存操作流 字节内存操作流:ByteArrayOutp ...
- Java学习笔记38(字符流)
字符输出流:Writer类:使用时候需要它的子类 局限性:只能写文本文件,无法写其他文件 方法: package demo; import java.io.FileWriter; import jav ...
- java学习笔记(7)——I/O流
一.File类 File(File parent, String child); File(Stirng filename); ------------------------------------ ...
- 【原】Java学习笔记033 - IO
package cn.temptation; public class Sample01 { public static void main(String[] args) { // 需求:继承关系中爷 ...
- java学习笔记之IO编程—打印流和BufferedReader
1.打印流(PrintWriter) 想要通过程序实现内容输出,其核心一定是要依靠OutputStream类,但是OutputStream类有一个最大缺点,就是这个类中的输出操作功能有限,所有的数据一 ...
- Java学习笔记-10.io流
1.输入流,只能从中读取数据,而不能向其写出数据.输出流,只能想起写入字节数据,而不能从中读取. 2.InputStream的类型有: ByteArrayInputStream 包含一个内存缓冲区,字 ...
- Java学习笔记--文件IO
简介 对于任何程序设计语言,输入和输出(Input\Output)都是系统非常核心的功能,程序运行需要数据,而数据的获取往往需要跟外部系统进行通信,外部系统可能是文件.数据库.其他程序.网络.IO设备 ...
- Java学习笔记之——IO
一. IO IO读写 流分类: 按照方向:输入流(读),输出流(写) 按照数据单位:字节流(传输时以字节为单位),字符流(传输时以字符为单位) 按照功能:节点流,过滤流 四个抽象类: InputStr ...
随机推荐
- spring boot(七)mybatis多数据源解决方案
说起多数据源,一般都来解决那些问题呢,主从模式或者业务比较复杂需要连接不同的分库来支持业务.我们项目是后者的模式,网上找了很多,大都是根据jpa来做多数据源解决方案,要不就是老的spring多数据源解 ...
- 6月17 ThinkPHP连接数据库------数据的修改及删除
1.数据修改操作 save() 实现数据修改,返回受影响的记录条数 具体有两种方式实现数据修改,与添加类似(数组.AR方式) 1.数组方式 a) $goods = D(“Goods” ...
- 创建属性Attribute
XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(xmlPath); var root = xmlDoc.DocumentElement;//取到 ...
- git 恢复误删的分支
在使用git的过程中,因为人为因素造成分支(commit)被删除,可以使用以下步骤进行恢复. 首先用以下步骤创建一个新分支,修改一些文件后删除,以便进行恢复. 1.创建分支 abc git branc ...
- Maven管理jar包依赖常出现的不能实例化类的问题
you'ji 在maven管理jar包依赖时,存在一种常见的问题. pom.xml文件配置没问题,通过eclipse里中的maven dependencies查看,也确实有这个jar 包,或者这个类. ...
- MapReduce(三)
MapReduce(三) MapReduce(三): 1.关于倒叙排序前10名 1)TreeMap根据key排序 2)TreeSet排序,传入一个对象,排序按照类中的compareTo方法排序 2.写 ...
- OSS 实例
步骤 1.初始化ossClient实例 2.判断bucket是否存在(doesBucketExist) 3.上传图片(putObject(bucket,key,file))(注意:key是图片所在的路 ...
- PyCharm调试运行Scrapy教程
一.使用scrapy创建一个项目 这里使用scrapy官方第一个示例 scrapy startproject tutorial 使用PyCharm打开项目,在tutorial/tutorial/spi ...
- 包--json 与 pickle 模块
一. 包 一个含有__init__.py 文件的文件夹(将py 文件中的内容划分成不同的部分放在不同的py 文件中,在将这些py 文件放在一个文件夹中) 是模块,不做执行文件,仅做调用 m1.py 和 ...
- 动态规划-最长单调递增子序列(dp)
最长单调递增子序列 解题思想:动态规划 1.解法1(n2) 状态:d[i] = 长度为i+1的递增子序列的长度 状态转移方程:dp[i] = max(dp[j]+1, dp[i]); 分析:最开始把d ...