标签:reader 目录 转换 mic void 读取 top cep tab
-------------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 static void 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[]=new char[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】
标签:reader 目录 转换 mic void 读取 top cep tab
原文地址:http://www.cnblogs.com/siwuxie095/p/6623881.html