字节流
FileInputStream和FileOutputStream分别继承自InputStream和OutputStream用于向文件中输入和输出字节。
FileInputStream和FileOutputStream的常用构造方法:
FileInputStream(String name) throws FileNotFoundException
FileInputStream(File file)
FileOutputStream(String name)
FileOutputStream(File file)
FileOutputStream(File file,boolean append)
1)FileInputStream和FileOutputStream类支持其父类InputStream和OutputStream所提供的数据读写方法。
2)注意:
在实例化FileInputStream和FileOutputStream流时要用try-catch语句以处理其可能抛出的FileNotFoundException。
在读写数据时也要try-catch语句以处理可能抛出的IOException。
FileNotFoundException是IOException的子类。
例子1:(测试FileInputStream)
import java.io.*;
public class TestFileInputStream {
public static void main(String[] args){
int b = 0;
FileInputStream in = null;
try {
in = new FileInputStream("E:\\Workspaces\\MyEclipse 8.5\\test\\src\\TestFileInputStream.java");
} catch (FileNotFoundException e) {
System.out.println("找不到指定文件!");
System.exit(-1);
}
try {
long num = 0;
while((b = in.read()) != -1){
System.out.print((char)b);
num++;
}
in.close();
System.out.print("");
System.out.println("共读取了"+num+"个字节");
} catch (IOException e) {
System.out.println("文件读取错误!");
System.exit(-1);
}
}
}
输出结果:
import java.io.*;
public class TestFileInputStream {
public static void main(String[] args){
int b = 0;
FileInputStream in = null;
try {
in = new FileInputStream("E:\\Workspaces\\MyEclipse 8.5\\test\\src\\TestFileInputStream.java");
} catch (FileNotFoundException e) {
System.out.println("?????????¨??????");
System.exit(-1);
}
try {
long num = 0;
while((b = in.read()) != -1){
System.out.print((char)b);
num++;
}
in.close();
System.out.print("");
System.out.println("????????"+num+"??×???");
} catch (IOException e) {
System.out.println("?????????í?ó??");
System.exit(-1);
}
}
}
共读取了669个字节
例子2:(文件复制)
import java.io.*;
public class TestOutputStream {
public static void main(String[] args){
int b = 0;
FileInputStream in = null;
FileOutputStream out = null;
try{
in = new FileInputStream("E:\\Workspaces\\MyEclipse 8.5\\test\\src\\TestOutputStream.java");
out = new FileOutputStream("D:\\a.java");
while((b = in.read()) != -1){
out.write(b);
}
in.close();
out.close();
}catch(FileNotFoundException e){
e.printStackTrace();
}catch(IOException e){
e.printStackTrace();
}
System.out.println("文件已复制!");
}
}
输出结果:
文件已复制!
例子3:(测试Reader)
import java.io.*;
public class TestReader {
public static void main(String[] args){
FileReader fr = null;
int c = 0;
try{
fr = new FileReader("E:\\Workspaces\\MyEclipse 8.5\\test\\src\\TestReader.java");
int ln = 0;
while((c = fr.read()) != -1){
System.out.print((char)c);
ln ++ ;
}
fr.close();
}catch(FileNotFoundException e){
System.out.println("文件找不到!");
System.exit(-1);
}catch(IOException e){
System.out.println("文件读写错误!");
System.exit(-1);
}
}
}
输出结果:
import java.io.*;
public class TestReader {
public static void main(String[] args){
FileReader fr = null;
int c = 0;
try{
fr = new FileReader("E:\\Workspaces\\MyEclipse 8.5\\test\\src\\TestReader.java");
int ln = 0;
while((c = fr.read()) != -1){
System.out.print((char)c);
ln ++ ;
}
fr.close();
}catch(FileNotFoundException e){
System.out.println("文件找不到!");
System.exit(-1);
}catch(IOException e){
System.out.println("文件读写错误!");
System.exit(-1);
}
}
}
例子4:(测试Writer)
import java.io.*;
public class TestWriter {
public static void main(String[] args){
FileWriter fw = null;
try{
fw = new FileWriter("D:\\b.dat");
for(int c = 0; c < 50000; c++){
fw.write(c);
}
fw.close();
}catch(IOException e){
e.printStackTrace();
System.out.println("文件写入错误!");
System.exit(-1);
}
}
}