1:Java.io 包中定义了多个流类型(类或抽象类)来实现输入/输出功能;可以从不同的角度对其进行分类。
①:按数据流的方向不同可以分为输入流和输出流。
②:按处理数据单位不同可以分为字节流和字符流。
③:按照功能不同可以分为节点流和处理流。
2:J2SDK所提供的所有流类型位于包java.io内都分别继承自一下四种抽象流类型。
字节流 字符流
输入流 InputStream reader
输出流 OutputStream Writer
|类型 |字符流 |字节流
|File(文件)|FileRead / FileWriter | FIleInputStream / FileOutputStream
|Memory Array| CharArrayReade/Writer|ByteArrayInputStream / out...
Memory String| StringReader / StringWriter| --------|
|Pipe(管道) |PipedReader / PipedWriter | PipedInputStream / Output...
1:以Stream结尾的都是都是字节流
读取
import java.io.*;
public class TestFileInputStream {
public static void main (String [] args){
int b = 0;
FileInputStream in = null;
try {
in = new FileInputStream("d:\\java\\io\\TestFileInputStream.java");
} catch(FileNotFoundException e) {
System.out.println("找不到指定文件"):
System.exit(-1);
}
try{
long num = 0;
while((b = in.read()) != -1){ //一个个字节的读取,把读出来的值赋给b,b=-1,代表读完了
System.out.print((char)b); //把b转换为一个char类型
num++; //num代表读取了多少个字节
}
in.close;
System.out.println();
System.out.println("共读取了" +num+ "个字节");
} catch(IOException e1) {
System.out.println("文件读取错误");
System.exit(-1);
}
}
}
复制
import java.io.*;
public class TestFileOutputStream {
public static void main (String [] args){
int b = 0;
FileInputStream in = null;
FileOutputStream Out = null;
try {
in = new FileInputStream("d:\\java\\io\\TestFileInputStream.java");
out = new FileOutputStream("d:\\share\java\io\HW.java");
while((b = in.read()) != -1){ //读取 然后通过OutputStream写入
Out.write(b);
}
in.close();
outt.close();
} catch(FileNotFoundException e2) {
System.out.println("找不到指定文件");
System.exit(-1);
}catch {IOException e1}{
System.out.println("文件复制错误");
System.exit(-1);
}
System.out.println("文件已复制");
}
}