一、IO流
1. IO流是用来处理设备之间的数据传输,java是通过流的方式完成对数据的传输。
2. 操作的基本规律
1>明确源和目的。
2>操作的数据是否是纯文本。
3>当体系明确后,明确要使用哪个具体的对象。
二、IO流结构
IO流
|---字节流
|--输入流抽象基类:InputStream
|--输出流抽象基类:Outputtream
|---字符流
|--输入流抽象基类:Reader
|--输出流抽象基类:Writer
注:由这四个类派生出来的子类名称都是以其父类名作为子类名的后缀。
例 :Reader的子类FileReader
Writer的子类FileWriter
FileReader程序示例:
package tan; import java.io.FileReader; public class FileReaderDemo { public static void main(String[] args) { FileReader fr=null; try { fr=new FileReader("demo.txt"); //定义一个字符数组。用于存储读到字符。 //该read(char[])返回的是读到字符个数。 char buff[]=new char[100]; int num=0; while((num=fr.read(buff))!=-1){ System.out.println(new String(buff,0,num)); } } catch (Exception e) { // TODO: handle exception }finally{ try { fr.close(); } catch (Exception e2) { // TODO: handle exception } } } }
小知识:
//传递一个true参数,代表不覆盖已有的文件。并在已有文件的末尾处进行数据续写。 fw=new FileWriter("demo.txt",true); fw.write("tan zheng qiang");
程序示例1:字节流文件复制:利用循环一次一次的读,每读一次就输出一次,直到文件结束。
package tan; //1.导入io包 import java.io.*; public class Test { public static void main(String[] args) { FileInputStream fis=null; FileOutputStream fos=null; try{ //2.生成代表输入流的对象 fis=new FileInputStream("C:/Users/Administrator/workspace/IO流操作/from.txt"); fos=new FileOutputStream("C:/Users/Administrator/workspace/IO流操作/to.txt"); //3.生成一个字节数组 byte buffer[] =new byte[1024]; //4.调用输入流对象的read方法,返回数据的大小 while(true){ int temp=fis.read(buffer,0,buffer.length); if(temp==-1){ break; } fos.write(buffer, 0, temp); } }catch(Exception e){ System.out.println(e); }finally{ try {//5.//关闭输入输出流 fis.close(); fos.close(); } catch (Exception e) { System.out.println(e); } } } }
程序示例2:字符流的使用【文件复制】
//文件复制: //1.导入io包 //2.生成代表输入流的对象 //3.生成一个字节数组 //4.调用输入流对象的read方法,返回数据的大小 //5.//关闭输入输出流 package tan; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import javax.management.RuntimeErrorException; public class ReadFile { public static void main(String[] args) { FileReader fr = null; FileWriter fw = null; try { fr = new FileReader("C:/Users/Administrator/workspace1/20140727/src/tan/FileTest.java"); fw = new FileWriter("to.txt"); char buf[] = new char[1024]; //第一种方式 int len = 0; while ((len = fr.read(buf)) != -1) { fw.write(buf, 0, len); } System.out.println("文件复制成功!"); //第二种方式 // while(true){ // int temp=fr.read(buf, 0, buf.length); // if(temp==-1){ // break; // } // fw.write(buf, 0, temp); // } } catch (Exception e) { throw new RuntimeException("文件复制失败!"); } finally { try { fr.close(); fw.close(); } catch (Exception e) { e.toString(); } } } } // public void write(char[] cbuf, int off, int len) throwsIOException写入字符数组的某一部分。
IO流操作
时间: 2024-11-07 19:03:14