Java IO流知识:
1、输入输出\输出流原理
2、输入、输出流的分类:
3、节点流和处理流
简答介绍4个抽象类:
抽象类InputStream:
例子:(TestFileInputStream.java)
package com.zhj.www;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
public class TestFileInputStream {
public static void main(String[] args) {
FileInputStream inputStream = null;
int b = 0;
try {
inputStream = new FileInputStream("E:\\JavaCode\\eclipse-workspace\\TestFileInputStream\\src\\com\\zhj\\www\\TestFileInputStream.java");//"\\"路径分隔符
} catch (FileNotFoundException e) {
System.out.println("找不到");
System.exit(-1);
}
try {
long num = 0;
while ((b = inputStream.read()) != -1) {//表示文件还没读到结尾
System.out.println((char)b);
num++;
}
inputStream.close();
System.out.println();
System.out.println("共读到字节:"+num);
} catch (IOException e1) {
System.out.println("文件读取错误");
System.exit(-1);
}
}
}//读取文件字节数
运行结果:
共读到字节:xxx
抽象类:OutputStream
改错:由程序中输出数据。
通过管道,从程序中向文件里写东西。
简单图像化理解:
例子:(TestFileOutStream.java)
package com.zhj.www;
import java.io.*;
public class TestFileOutStream {
public static void main(String[] args) {
int b = 0;
FileOutputStream out = null;//输出管道
FileInputStream in =null;//输入管道
try {
in= new FileInputStream("E:\\JavaCode\\eclipse-workspace\\TestFileOutStream\\src\\com\\zhj\\www\\TestFileOutStream.java");//插在一个文件
out = new FileOutputStream("E:\\JavaCode\\eclipse-workspace\\TestFileOutStream\\src\\com\\zhj\\www\\HelloWorld.java");//插在一个文件
while((b= in.read()) != -1) {//当read到文件结尾时会返回-1
out.write(b);//
}
in.close();//关闭文件
out.close();
} catch (FileNotFoundException e2) {
System.out.println("找不到指定文件");
System.exit(-1);
}catch (IOException e1) {
System.out.println("文件复制错误");
System.exit(-1);
}
System.out.println("文件已经复制");
}
}
运行结果:
文件已经复制
抽象类 Reader:
例子:
package com.zhj.www;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class TestFileReader {
public static void main(String[] args) {
FileReader fReader =null;
try {
fReader = new FileReader("E:\\JavaCode\\eclipse-workspace\\TestFileReader\\src\\com\\zhj\\www\\TestFileReader.java");
int c =0;
while((c = fReader.read()) != -1) {
System.out.println((char)c);
}
} catch (FileNotFoundException e) {
System.out.println("没有找到指定文件");
} catch (IOException e) {
System.out.println("文件读取错误");
}
}
}
运行结果:
运行完美无瑕,不会出现“?",因为是一个字符外写。
抽象类Writer:
例子:
package com.zhj.www;
import java.io.FileWriter;
import java.io.IOException;
public class TestFileWriter {
public static void main(String[] args) {
FileWriter fileWriter = null; //创建一个FileWriter
try {
fileWriter = new FileWriter("E:\\JavaCode\\eclipse-workspace\\TestFileWriter\\src"
+ "\\com\\zhj\\www\\Hello.dat");//往文件里写入,当文件不存在,会自动创建,但是必须指定目录
for (int c =0; c<=50000;c++) {
fileWriter.write(c);//把c写入filWriter文件中
}
fileWriter.close();
} catch (IOException e) {
e.printStackTrace();//printStackTrace()方法的意思是:在命令行打印异常信息在程序中出错的位置及原因。
System.out.println("文件写入错误");
System.exit(-1);
}
}
}
不再给出运行结果。
练习:
通过一个FileReader和FilWriter类实现从一个文件复制到另一个文件。
package com.zhj.www;
import java.io.*;
public class TestFileWriterAndReader {
public static void main(String[] args) {
FileReader fileReader = null;
FileWriter fileWriter = null;
try {
int c =0;
fileReader = new FileReader("E:\\JavaCode\\eclipse-workspace\\TestFilWriterAndReader"
+ "\\src\\com\\zhj\\www\\TestFileWriterAndReader.java");//文件一定要存在,否则会执行异常
fileWriter = new FileWriter("E:\\JavaCode\\eclipse-workspace\\TestFilWriterAndReader"
+ "\\src\\com\\zhj\\www\\Hello.java");//文件不存在会自动创建
while((c = fileReader.read()) != -1) {
fileWriter.write(c);
}
fileReader.close();
fileWriter.close();
} catch (FileNotFoundException e) {
System.out.println("没有找到指定文件");
System.exit(-1);
}catch (IOException e) {
System.out.println("文件读取错误");
System.exit(-1);
}
System.out.println("文件已经复制");
}
}