使用字符流读写数据
来源:互联网 发布:源码云平台 编辑:程序博客网 时间:2024/06/05 02:15
-------------siwuxie095
工程名:TestRWCharStream
包名:com.siwuxie095.charstream
类名:RWByCharStream.java
打开资源管理器,在工程 TestRWCharStream 文件夹下,放入
一个文本:java.txt
java.txt 的内容:
工程结构目录如下:
代码:
package com.siwuxie095.charstream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
public class RWByCharStream {
public staticvoid main(String[] args) {
try {
//先创建一个文件对象
File file=new File("java.txt");
//再创建一个文件输入流(字节流),传入 file
FileInputStream fis=new FileInputStream(file);
//使用 InputStreamReader 将字节流转化为字符流
//传入 fis 并指定字符集:UTF-8
InputStreamReader isr=new InputStreamReader(fis,"UTF-8");
//文件的输出流会自动创建文件 java_new.txt,不需要手动创建
FileOutputStream fos=new FileOutputStream("java_new.txt");
//在对同一个文件进行读写或对同一段数据操作时,其编码设定一定要一致
OutputStreamWriter osw=new OutputStreamWriter(fos,"UTF-8");
//使用 InputStreamReader 的 read()方法读取数据
//传入字符型数组,read()方法将数据填充到该数组
//先创建一个字符型数组,大小指定为 100
char input[]=newchar[100];
int len=0;
//java.txt的大小肯定大于100个字符,所以需要循环读取
//read()的返回值是整型,如果返回-1,则读取到文件末尾
while ((len=isr.read(input))!=-1) {
//直接打印该字符型数组 input 会强制调用该数组的toString()方法
//自然而然的将字符数组转换成了字符串
//不过这种方法有瑕疵,输出的文本最后有冗余数据
//因为在文件末尾时,读取的数据不一定能填满100个字符
//System.out.println(input);
//也可以使用匿名对象 new String() 一个新的字符串对象,并传入input,
//同时指定偏移量为 0(因为需要从数组的最开始获取),长度为 len
//
//注意:要根据读取到的实际的数据量来创建String
//这样,读取到文件末尾时,即使当前的数组没有被填满,如只填充了30,
//创建String时也只会从这30个字符中读取,剩下的70个是之前读取的冗余数据
//就不会再被输出了
System.out.println(new String(input,0,len));
//直接从数组写入到输出流中
//传入数组,指定写入的偏移量和写入的长度
osw.write(input,0,len);
//或每获取一个String,就写入到输出流中
//String str=new String(input, 0, len);
//osw.write(str);
}
//读取完毕,关闭流
isr.close();
fis.close();
osw.close();
fos.close();
}catch (FileNotFoundException e) {
e.printStackTrace();
}catch (UnsupportedEncodingException e) {
e.printStackTrace();
}catch (IOException e) {
e.printStackTrace();
}
}
}
运行一览:
(1)没有指定偏移量和长度时:
System.out.println(input);
或
System.out.println(new String(input));
(2)指定偏移量和长度后:
System.out.println(new String(input,0,len));
java_new.txt 的内容一览:
运行后,工程结构目录一览:
【made by siwuxie095】
- 使用字符流读写数据
- JAVA IO:使用字符流读写数据
- java 使用字符流读写数据
- java19.IO操作------使用字符流读写数据
- java-IO操作-使用字符流读写数据
- 使用带有缓冲的字符流读写数据
- java 使用带有缓冲的字符流读写数据
- java20.IO操作------使用带有缓冲的字符流读写数据
- java-IO操作——使用带有缓冲的字符流读写数据
- 使用字符流来读写汉字
- 使用字节流读写中文字符
- 使用字节流读写数据
- 利用字节流字符流操作数据读写
- 字符流读写文件
- java 字符流 读写
- 使用Java 输出/输出流读写数据
- 使用Java 输出/输出流读写数据
- 使用Java 输出/输出流读写数据
- Java反射机制
- JAVA与C++的差异(2)
- Dubbo基于Zookeeper实现分布式服务:Dubbo+Zookeeper+Spring整合应用
- 蓝桥杯-分糖果
- 百度地图
- 使用字符流读写数据
- Power View in 2016Excel
- LeetCode之Assign Cookies
- android studio 中 .9.png的制作
- 【543 Diameter of Binary Tree】深度优先搜素思维运用
- Design Pattern(11)-Iterator Pattern
- Android的性能优化方法
- wxPython sizer放置窗口部件
- Fragment学习小结