一、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);
}
}
}
}
//文件复制:
//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写入字符数组的某一部分。
原文:http://blog.csdn.net/u010834071/article/details/38226423