导图社区 IO 流 操 作
IO 流 操 作思维导图,包括:数据类型划分、其它流的类型、对象序列化、File文件、数据传输方向划分。
编辑于2022-06-28 21:20:27I/O 流 操 作
数据类型划分
字节流
import java.io.* ; public class Copy{ public static void main(String args[]){ if(args.length!=2){ // 判断是否是两个参数 System.out.println("输入的参数不正确。") ; System.out.println("例:java Copy 源文件路径 目标文件路径") ; System.exit(1) ; // 系统退出 } File f1 = new File(args[0]) ; // 源文件的File对象 File f2 = new File(args[1]) ; // 目标文件的File对象 if(!f1.exists()){ System.out.println("源文件不存在!") ; System.exit(1) ; } InputStream input = null ; // 准备好输入流对象,读取源文件 OutputStream out = null ; // 准备好输出流对象,写入目标文件 try{ input = new FileInputStream(f1) ; }catch(FileNotFoundException e){ e.printStackTrace() ; } try{ out = new FileOutputStream(f2) ; }catch(FileNotFoundException e){ e.printStackTrace() ; } if(input!=null && out!=null){ // 判断输入或输出是否准备好 int temp = 0 ; try{ while((temp=input.read())!=-1){ // 开始拷贝 out.write(temp) ;// 边读边写 } System.out.println("拷贝完成!") ; }catch(IOException e){ e.printStackTrace() ; System.out.println("拷贝失败!") ; } try{ input.close() ; // 关闭 out.close() ; // 关闭 }catch(IOException e){ e.printStackTrace() ; } } } }
字节流直接操作的是文件,(图片,字节等形式)
OutPutStream输出流/写流(所把数据写入到文件中)
FileOutPutStream
package com.io; import java.io.File; importjava.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.OutputStream; publicclass FileOutputStreamDemo1 { publicstaticvoid main(String[] args) throws Exception { File f = new File("D:"+File.separator+"hello.doc"); //new FileOutputStream(f,true); 设置true在后面缀加 OutputStream os = new FileOutputStream(f,true); String str="hello world lihaoran"; byte[] b = str.getBytes(); for (int i = 0; i length; i++) { os.write(b[i]); } //os.write(b); os.close(); } }
write()
InputStream输入流(从文件中往出读数据)
FileInputStream
package com.io; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.InputStream; public class FileInputStreamDemo { public static void main(String[] args) throws Exception { File f = new File("D:"+File.separator+"hello.doc"); InputStream is = new FileInputStream(f); byte[] b = new byte[is.available()]; int temp=0; int len=0; while((temp=is.read())!=-1){ b[len]=(byte)temp; len++; } System.out.print(new String(b)); is.close(); } } package com.io; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.InputStream; public class FileInputStreamDemo { public static void main(String[] args) throws Exception { File f = new File("D:"+File.separator+"hello.doc"); InputStream is = new FileInputStream(f); byte[] b = new byte[is.available()]; is.read(b); System.out.print(new String(b)); is.close(); } }
available
read
字符流
字符流:数据先存放在缓存之后,再从缓存中写入文件 (字符形式)
Writer输出流/写流(所把数据写入到文件中)
FileWriter
package com.io; import java.io.File; import java.io.FileWriter; import java.io.Writer; publicclass WriterDemo { publicstaticvoid main(String[] args) throws Exception { File f = new File("D:"+File.separator+"hello.doc"); //true缀加 Writer wr = new FileWriter(f,true); String str="liharoan hello world"; wr.write(str); wr.close(); } }
write
Reader输入流(从文件中往出读数据)
FileReader
package com.io; import java.io.File; import java.io.FileReader; import java.io.Reader; publicclass ReaderDemo { publicstaticvoid main(String[] args) throws Exception { File f = new File("D:"+File.separator+"hello.doc"); //true缀加 Reader r = new FileReader(f); char[] b = newchar[(int) f.length()]; for(int i=0;ilength;i++){ r.read(b); } System.out.println(new String(b)); r.close(); } } package com.io; import java.io.File; import java.io.FileReader; import java.io.Reader; publicclass ReaderDemo { publicstaticvoid main(String[] args) throws Exception { File f = new File("D:"+File.separator+"hello.doc"); //true缀加 Reader r = new FileReader(f); char[] b = newchar[(int) f.length()]; /*for(int i=0;i r.read(b); } System.out.println(new String(b));*/ int temp=0; int len=0; while((temp=r.read())!=-1){ b[len]=(char)temp; len++; } System.out.println(new String(b)); r.close(); } }
read
其它流的类型
转换流
OutputStreamWriter
import java.io.* ; public class OutputStreamWriterDemo01{ public static void main(String args[]) throws Exception { // 所有异常抛出 File f = new File("d:" + File.separator + "test.txt") ; Writer out = null ; // 字符输出流 out = new OutputStreamWriter(new FileOutputStream(f)) ; // 字节流变为字符流 out.write("hello world!!") ; // 使用字符流输出 out.close() ; } };
将字节流转换成字符流写入到文件中
InputStreamReader
import java.io.* ; public class InputStreamReaderDemo01{ public static void main(String args[]) throws Exception{ File f = new File("d:" + File.separator + "test.txt") ; Reader reader = null ; reader = new InputStreamReader(new FileInputStream(f)) ; // 将字节流变为字符流 char c[] = new char[1024] ; int len = reader.read(c) ; // 读取 reader.close() ; // 关闭 System.out.println(new String(c,0,len)) ; } };
将字节流变为字符流读取文件内容
内存流
import java.io.* ; public class ByteArrayDemo01{ public static void main(String args[]){ String str = "HELLOWORLD" ; // 定义一个字符串,全部由大写字母组成 ByteArrayInputStream bis = null ; // 内存输入流 ByteArrayOutputStream bos = null ; // 内存输出流 bis = new ByteArrayInputStream(str.getBytes()) ; // 向内存中输出内容 bos = new ByteArrayOutputStream() ; // 准备从内存ByteArrayInputStream中读取内容 int temp = 0 ; while((temp=bis.read())!=-1){ char c = (char) temp ;// 读取的数字变为字符 bos.write(Character.toLowerCase(c)) ; // 将字符变为小写 } // 所有的数据就全部都在ByteArrayOutputStream中 String newStr = bos.toString() ; // 取出内容 try{ bis.close() ; bos.close() ; }catch(IOException e){ e.printStackTrace() ; } System.out.println(newStr) ; } };
打印流
import java.io.* ; public class PrintDemo03{ public static void main(String arg[]) throws Exception{ PrintStream ps = null ; // 声明打印流对象 // 如果现在是使用FileOuputStream实例化,意味着所有的输出是向文件之中 ps = new PrintStream(new FileOutputStream(new File("d:" + File.separator + "test.txt"))) ; String name = "李兴华" ; // 定义字符串 int age = 30 ; // 定义整数 float score = 990.356f ; // 定义小数 char sex = 'M' ; // 定义字符 ps.printf("姓名:%s;年龄:%s;成绩:%s;性别:%s",name,age,score,sex) ; ps.close() ; } };
管道流
import java.io.* ; class Send implements Runnable{ // 线程类 private PipedOutputStream pos = null ; // 管道输出流 public Send(){ this.pos = new PipedOutputStream() ; // 实例化输出流 } public void run(){ String str = "Hello World!!!" ; // 要输出的内容 try{ this.pos.write(str.getBytes()) ; }catch(IOException e){ e.printStackTrace() ; } try{ this.pos.close() ; }catch(IOException e){ e.printStackTrace() ; } } public PipedOutputStream getPos(){ // 得到此线程的管道输出流 return this.pos ; } }; class Receive implements Runnable{ private PipedInputStream pis = null ;// 管道输入流 public Receive(){ this.pis = new PipedInputStream() ; // 实例化输入流 } public void run(){ byte b[] = new byte[1024] ;// 接收内容 int len = 0 ; try{ len = this.pis.read(b) ; // 读取内容 }catch(IOException e){ e.printStackTrace() ; } try{ this.pis.close() ; // 关闭 }catch(IOException e){ e.printStackTrace() ; } System.out.println("接收的内容为:" + new String(b,0,len)) ; } public PipedInputStream getPis(){ return this.pis ; } }; public class PipedDemo{ public static void main(String args[]){ Send s = new Send() ; Receive r = new Receive() ; try{ s.getPos().connect(r.getPis()) ;// 连接管道 }catch(IOException e){ e.printStackTrace() ; } new Thread(s).start() ; // 启动线程 new Thread(r).start() ; // 启动线程 } };
BufferedReader
import java.io.* ; public class BufferedReaderDemo01{ public static void main(String args[]){ BufferedReader buf = null ; // 声明对象 buf = new BufferedReader(new InputStreamReader(System.in)) ; // 将字节流变为字符流 String str = null ; // 接收输入内容 System.out.print("请输入内容:") ; try{ str = buf.readLine() ;// 读取一行数据 }catch(IOException e){ e.printStackTrace() ; // 输出信息 } System.out.println("输入的内容为:" + str) ; } };
Scanner
import java.util.* ; import java.text.* ; import java.io.* ; public class ScannerDemo05{ public static void main(String args[]){ File f = new File("D:" + File.separator + "test.txt") ; // 指定操作文件 Scanner scan = null ; try{ scan = new Scanner(f) ; // 从键盘接收数据 }catch(Exception e){} StringBuffer str = new StringBuffer() ; while(scan.hasNext()){ str.append(scan.next()).append('\n') ; // 取数据 } System.out.println("文件内容为:" + str) ; } };
数据操作流
DataInputStream
import java.io.DataInputStream ; import java.io.File ; import java.io.FileInputStream ; public class DataInputStreamDemo{ public static void main(String args[]) throws Exception{ // 所有异常抛出 DataInputStream dis = null ; // 声明数据输入流对象 File f = new File("d:" + File.separator + "order.txt") ; // 文件的保存路径 dis = new DataInputStream(new FileInputStream(f)) ; // 实例化数据输入流对象 String name = null ; // 接收名称 float price = 0.0f ; // 接收价格 int num = 0 ; // 接收数量 char temp[] = null ; // 接收商品名称 int len = 0 ; // 保存读取数据的个数 char c = 0 ;// '\u0000' try{ while(true){ temp = new char[200] ;// 开辟空间 len = 0 ; while((c=dis.readChar())!='\t'){// 接收内容 temp[len] = c ; len ++ ; // 读取长度加1 } name = new String(temp,0,len) ; // 将字符数组变为String price = dis.readFloat() ; // 读取价格 dis.readChar() ; // 读取\t num = dis.readInt() ; // 读取int dis.readChar() ; // 读取\n System.out.printf("名称:%s;价格:%5.2f;数量:%d\n",name,price,num) ; } }catch(Exception e){} dis.close() ; } };
DataOutputStream
import java.io.DataOutputStream ; import java.io.File ; import java.io.FileOutputStream ; public class DataOutputStreamDemo{ public static void main(String args[]) throws Exception{ // 所有异常抛出 DataOutputStream dos = null ; // 声明数据输出流对象 File f = new File("d:" + File.separator + "order.txt") ; // 文件的保存路径 dos = new DataOutputStream(new FileOutputStream(f)) ; // 实例化数据输出流对象 String names[] = {"衬衣","手套","围巾"} ; // 商品名称 float prices[] = {98.3f,30.3f,50.5f} ; // 商品价格 int nums[] = {3,2,1} ;// 商品数量 for(int i=0;i dos.writeChars(names[i]) ; // 写入字符串 dos.writeChar('\t') ; // 写入分隔符 dos.writeFloat(prices[i]) ; // 写入价格 dos.writeChar('\t') ; // 写入分隔符 dos.writeInt(nums[i]) ; // 写入数量 dos.writeChar('\n') ; // 换行 } dos.close() ; // 关闭输出流 } };
合并流
import java.io.File ; import java.io.SequenceInputStream ; import java.io.FileInputStream ; import java.io.InputStream ; import java.io.FileOutputStream ; import java.io.OutputStream ; public class SequenceDemo{ public static void main(String args[]) throws Exception { // 所有异常抛出 InputStream is1 = null ; // 输入流1 InputStream is2 = null ; // 输入流1 OutputStream os = null ; // 输出流 SequenceInputStream sis = null ; // 合并流 is1 = new FileInputStream("d:" + File.separator + "a.txt") ; is2 = new FileInputStream("d:" + File.separator + "b.txt") ; os = new FileOutputStream("d:" + File.separator + "ab.txt") ; sis = new SequenceInputStream(is1,is2) ; // 实例化合并流 int temp = 0 ; // 接收内容 while((temp=sis.read())!=-1){ // 循环输出 os.write(temp) ; // 保存内容 } sis.close() ; // 关闭合并流 is1.close() ; // 关闭输入流1` is2.close() ; // 关闭输入流2 os.close() ;// 关闭输出流 } };
压缩流
ZipInputStream
import java.io.File ; import java.io.OutputStream ; import java.io.InputStream ; import java.util.zip.ZipEntry ; import java.util.zip.ZipFile ; import java.util.zip.ZipInputStream ; import java.io.FileInputStream ; import java.io.FileOutputStream ; public class ZipInputStreamDemo02{ public static void main(String args[]) throws Exception{ // 所有异常抛出 File file = new File("d:" + File.separator + "mldndir.zip") ; // 定义压缩文件名称 File outFile = null ; // 输出文件的时候要有文件夹的操作 ZipFile zipFile = new ZipFile(file) ; // 实例化ZipFile对象 ZipInputStream zipInput = null ; // 定义压缩输入流 OutputStream out = null ; // 定义输出流,用于输出每一个实体内容 InputStream input = null ; // 定义输入流,读取每一个ZipEntry ZipEntry entry = null ; // 每一个压缩实体 zipInput = new ZipInputStream(new FileInputStream(file)) ; // 实例化ZIpInputStream while((entry = zipInput.getNextEntry())!=null){ // 得到一个压缩实体 System.out.println("解压缩" + entry.getName() + "文件。") ; outFile = new File("d:" + File.separator + entry.getName()) ; // 定义输出的文件路径 if(!outFile.getParentFile().exists()){ // 如果输出文件夹不存在 outFile.getParentFile().mkdir() ; // 创建文件夹 } if(!outFile.exists()){// 判断输出文件是否存在 outFile.createNewFile() ; // 创建文件 } input = zipFile.getInputStream(entry) ; // 得到每一个实体的输入流 out = new FileOutputStream(outFile) ; // 实例化文件输出流 int temp = 0 ; while((temp=input.read())!=-1){ out.write(temp) ; } input.close() ; // 关闭输入流 out.close() ; // 关闭输出流 } input.close() ; } };
ZipOutputStream
import java.io.File ; import java.io.FileInputStream ; import java.io.InputStream ; import java.util.zip.ZipEntry ; import java.util.zip.ZipOutputStream ; import java.io.FileOutputStream ; public class ZipOutputStreamDemo02{ public static void main(String args[]) throws Exception{ // 所有异常抛出 File file = new File("d:" + File.separator + "mldn") ;// 定义要压缩的文件夹 File zipFile = new File("d:" + File.separator + "mldndir.zip") ;// 定义压缩文件名称 InputStream input = null ; // 定义文件输入流 ZipOutputStream zipOut = null ; // 声明压缩流对象 zipOut = new ZipOutputStream(new FileOutputStream(zipFile)) ; zipOut.setComment("www.mldnjava.cn") ; // 设置注释 int temp = 0 ; if(file.isDirectory()){ // 判断是否是文件夹 File lists[] = file.listFiles() ; // 列出全部文件 for(int i=0;i input = new FileInputStream(lists[i]) ; // 定义文件的输入流 zipOut.putNextEntry(new ZipEntry(file.getName() +File.separator+lists[i].getName())) ; // 设置ZipEntry对象 while((temp=input.read())!=-1){ // 读取内容 zipOut.write(temp) ; // 压缩输出 } input.close() ; // 关闭输入流 } } zipOut.close() ; // 关闭输出流 } };
回退流
import java.io.ByteArrayInputStream ; import java.io.PushbackInputStream ; public class PushInputStreamDemo{ public static void main(String args[]) throws Exception { // 所有异常抛出 String str = "www.mldnjava.cn" ; // 定义字符串 PushbackInputStream push = null ; // 定义回退流对象 ByteArrayInputStream bai = null ; // 定义内存输入流 bai = new ByteArrayInputStream(str.getBytes()) ; // 实例化内存输入流 push = new PushbackInputStream(bai) ; // 从内存中读取数据 System.out.print("读取之后的数据为:") ; int temp = 0 ; while((temp=push.read())!=-1){ // 读取内容 if(temp=='.'){ // 判断是否读取到了“.” push.unread(temp) ; // 放回到缓冲区之中 temp = push.read() ; // 再读一遍 System.out.print("(退回"+(char)temp+")") ; }else{ System.out.print((char)temp) ; // 输出内容 } } } };
对象序列化
import java.io.Serializable ; public class Person implements Serializable{ private String name ; // 声明name属性,但是此属性不被序列化 private int age ; // 声明age属性 public Person(String name,int age){ // 通过构造设置内容 this.name = name ; this.age = age ; } public String toString(){ // 覆写toString()方法 return "姓名:" + this.name + ";年龄:" + this.age ; } }; import java.io.File ; import java.io.IOException ; import java.io.FileOutputStream ; import java.io.OutputStream ; import java.io.ObjectOutputStream ; import java.io.FileInputStream ; import java.io.InputStream ; import java.io.ObjectInputStream ; public class SerDemo05{ public static void main(String args[]) throws Exception{ Person per[] = {new Person("张三",30),new Person("李四",31), new Person("王五",32)} ; ser(per) ; Object o[] = (Object[])dser() ; for(int i=0;i Person p = (Person)o[i] ; System.out.println(p) ; } } public static void ser(Object obj[]) throws Exception { File f = new File("D:" + File.separator + "test.txt") ; // 定义保存路径 ObjectOutputStream oos = null ; // 声明对象输出流 OutputStream out = new FileOutputStream(f) ; // 文件输出流 oos = new ObjectOutputStream(out) ; oos.writeObject(obj) ;// 保存对象 oos.close() ; // 关闭 } public static Object[] dser() throws Exception { File f = new File("D:" + File.separator + "test.txt") ; // 定义保存路径 ObjectInputStream ois = null ; // 声明对象输入流 InputStream input = new FileInputStream(f) ; // 文件输入流 ois = new ObjectInputStream(input) ; // 实例化对象输入流 Object obj[] = (Object[])ois.readObject() ; // 读取对象 ois.close() ; // 关闭 return obj ; } };
对象序列化定义
对象序列化:就是把一个对象变为二进制的数据的一种方法,通过对象序列化可以方便的实现对象的传输或传输 如果一个类的对象想被序列化,则对象所在的类必须实现java.io.serializable接口,此接口定义如下: publicinterfaceSerializable(){}
对象序列化和对象反序列化
ObjectOutputStream(写入)序列化
writeObject
import java.io.File ; import java.io.FileOutputStream ; import java.io.OutputStream ; import java.io.ObjectOutputStream ; public class SerDemo01{ public static void main(String args[]) throws Exception { File f = new File("D:" + File.separator + "test.txt") ; // 定义保存路径 ObjectOutputStream oos = null ; // 声明对象输出流 OutputStream out = new FileOutputStream(f) ; // 文件输出流 oos = new ObjectOutputStream(out) ; oos.writeObject(new Person("张三",30)) ; // 保存对象 oos.close() ; // 关闭 } };
ObjectInputStream(读出)反序列化
readObject
import java.io.File ; import java.io.FileInputStream ; import java.io.InputStream ; import java.io.ObjectInputStream ; public class SerDemo02{ public static void main(String args[]) throws Exception { File f = new File("D:" + File.separator + "test.txt") ; // 定义保存路径 ObjectInputStream ois = null ; // 声明对象输入流 InputStream input = new FileInputStream(f) ; // 文件输入流 ois = new ObjectInputStream(input) ; // 实例化对象输入流 Object obj = ois.readObject() ; // 读取对象 ois.close() ; // 关闭 System.out.println(obj) ; } };
Tranisent
不参与序列化过程 注意:多个对象,必须在一次序列化的过程中完成
File文件
package com.io; import java.io.File ; import java.io.IOException ; public class FileDemo02{ public static void main(String args[]){ File f = new File("D:"+File.separator); print(f); } public static void print(File f){ if(f!=null){ if(f.isDirectory()){ File[] dir = f.listFiles(); if(dir!=null){ for(int i=0;i print(dir[i]); } } } else{ System.out.println(f.getPath()); } } } };
创建文件
package com.io; import java.io.File ; import java.io.IOException ; public class FileDemo01{ public static void main(String args[]){ File dir = new File("d:"+File.separator+"md"); File f = new File("d:"+File.separator+"md"+File.separator+"test.txt") ; // 实例化File类的对象 if(f.exists()){ f.delete(); } if(dir.exists()){ dir.delete(); System.out.println("删除"); }else{ dir.mkdir(); System.out.println("新建"); if(f.exists()){ try{ f.delete(); }catch(Exception e){ e.printStackTrace() ; // 输出异常信息 } }else{ try { f.createNewFile() ; } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } // 创建文件,根据给定的路径创建 } } } };
separator(windows/linux分割符)
createNewFile() 创建文件
delete()删除文件
f.exists()判断文是否存在
list()遍历文件名
package com.io; import java.io.File ; import java.io.IOException ; public class FileDemo02{ public static void main(String args[]){ File dir = new File("d:"+File.separator); String[] str=dir.list(); for (int i = 0; i System.out.println(str[i]); } } };
listFiles()完整路径
package com.io; import java.io.File ; import java.io.IOException ; public class FileDemo02{ public static void main(String args[]){ File dir = new File("d:"+File.separator); File[] str=dir.listFiles(); for (int i = 0; i System.out.println(str[i]); } } };
isDirectory()判断是否是目录
package com.io; import java.io.File ; import java.io.IOException ; public class FileDemo02{ public static void main(String args[]){ File dir = new File("d:"+File.separator); if(dir.isDirectory()){ System.out.println(dir.getPath()+"是目录"); }else{ System.out.println(dir.getPath()+"不是目录"); } } };
创建文件夹
数据传输方向划分
输出流
OutPutStream输出流/写流(所把数据写入到文件中)
FileOutPutStream
package com.io; import java.io.File; importjava.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.OutputStream; publicclass FileOutputStreamDemo1 { publicstaticvoid main(String[] args) throws Exception { File f = new File("D:"+File.separator+"hello.doc"); //new FileOutputStream(f,true); 设置true在后面缀加 OutputStream os = new FileOutputStream(f,true); String str="hello world lihaoran"; byte[] b = str.getBytes(); for (int i = 0; i length; i++) { os.write(b[i]); } //os.write(b); os.close(); } }
write()
Writer输出流/写流(所把数据写入到文件中)
FileWriter
package com.io; import java.io.File; import java.io.FileWriter; import java.io.Writer; publicclass WriterDemo { publicstaticvoid main(String[] args) throws Exception { File f = new File("D:"+File.separator+"hello.doc"); //true缀加 Writer wr = new FileWriter(f,true); String str="liharoan hello world"; wr.write(str); wr.close(); } }
write
输入流
InputStream输入流(从文件中往出读数据)
FileInputStream
package com.io; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.InputStream; public class FileInputStreamDemo { public static void main(String[] args) throws Exception { File f = new File("D:"+File.separator+"hello.doc"); InputStream is = new FileInputStream(f); byte[] b = new byte[is.available()]; int temp=0; int len=0; while((temp=is.read())!=-1){ b[len]=(byte)temp; len++; } System.out.print(new String(b)); is.close(); } } package com.io; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.InputStream; public class FileInputStreamDemo { public static void main(String[] args) throws Exception { File f = new File("D:"+File.separator+"hello.doc"); InputStream is = new FileInputStream(f); byte[] b = new byte[is.available()]; is.read(b); System.out.print(new String(b)); is.close(); } }
available
read
Reader输入流(从文件中往出读数据)
FileReader
package com.io; import java.io.File; import java.io.FileReader; import java.io.Reader; publicclass ReaderDemo { publicstaticvoid main(String[] args) throws Exception { File f = new File("D:"+File.separator+"hello.doc"); //true缀加 Reader r = new FileReader(f); char[] b = newchar[(int) f.length()]; for(int i=0;ilength;i++){ r.read(b); } System.out.println(new String(b)); r.close(); } } package com.io; import java.io.File; import java.io.FileReader; import java.io.Reader; publicclass ReaderDemo { publicstaticvoid main(String[] args) throws Exception { File f = new File("D:"+File.separator+"hello.doc"); //true缀加 Reader r = new FileReader(f); char[] b = newchar[(int) f.length()]; /*for(int i=0;i r.read(b); } System.out.println(new String(b));*/ int temp=0; int len=0; while((temp=r.read())!=-1){ b[len]=(char)temp; len++; } System.out.println(new String(b)); r.close(); } }
read