java输入输出流实例(FileInputStream、FileOutputStream实例)
来源:互联网 发布:后端开发 知乎 编辑:程序博客网 时间:2024/05/18 03:21
例1是使用FileInputStream与FileOutputStream的一个例子.程序可以复制文件,
它会先从来源文件读取数据至一个byte数组中,然后再将byte数组的数据写入目的文件.
例1 FileStreamDemo.java
import java.io.*;
public class FileStreamDemo {
public static void main(String[] args) {
try {
// 来源文件
FileInputStream in = new FileInputStream("D:/b.txt");
// 目的文件
FileOutputStream out = new FileOutputStream("C:/a.txt");
byte[] bytearray = new byte[1024];
do {
in.read(bytearray, 0, 1024);
out.write(bytearray);
} while (in.available() > 0);
in.close();
out.close();
} catch (ArrayIndexOutOfBoundsException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
程序中示范了两个read()方法,一个方法可以读入指定长度的数据至数组,另一个方法一次可以读入一个字节.每次读取之后,读取的光标都会往前进,如果读不到数据刚返回-1.使用available()方法可以获得还有多少字节可以读取.
在不使用文件流时,记得使用close()方法自行关闭流,以释放与流相依的系统资源.
FileOutputStream默认会以新建文件的方式来开启流.如果指定的文件名称已经存在,则原文件会被覆盖;如果想以附加的模式来写入文件,则可以在构建FileOutputStream实例时指定为附加模式.例如:
FileOutputStream fileOutputStream = new FileOutputStream(args[1],true);
构建方法的第二个append参数如果设定为true,在开启流时如果文件不存在则会新建一个文件,如果文件存在就直接开启流,并将写入的数据附加至文件末端.
----------------------------------------------------------------------------------------------------------------------
BufferedInputStream 和 BufferedOutputStream
java.io.BufferedInputStream与java.io.BufferedOutputStream可以为InputStream、OutputStream类的对象增加缓冲区功能,构建BufferedInputStream实例时,需要给定一个InputStream类型的实例,实现BufferedInputStream时,实际上最后是实现InputStream实例.同样地,在构建BufferedOutputStream时,也需要给定一个OutputStream实例,实现BufferedOutputStream时,实际上最后是实现OutputStream实例.
BufferedInputStream的数据成员buf是一个位数组,默认为2048字节,BufferedOutputStream的数据成员buf 也是一个位数组,默认为512字节.
例2是对例1的改写,不用自行设定缓冲区,比较简单且有效率.
例2 BufferedStreamDemo.java
import java.io.*;
public class FileStreamDemo {
public static void main(String[] args) {
try {
// 来源文件
FileInputStream in = new FileInputStream("D:/b.txt");
// 目的文件
FileOutputStream out = new FileOutputStream("C:/a.txt");
BufferedInputStream bufferedIn = new BufferedInputStream(in);
BufferedOutputStream bufferedOut = new BufferedOutputStream(out);
byte[] data = new byte[1];
while (bufferedIn.read(data) != -1) {
bufferedOut.write(data);
}
//将缓冲区中的数据全部写出
bufferedOut.flush();
//关闭流
bufferedIn.close();
bufferedOut.close();
} catch (ArrayIndexOutOfBoundsException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
为了确保缓冲区中的数据一定被写出至目的地,建议最后执行flush()将缓冲区中的数据全部写出目的流中,这个范例的执行结果与例1的执行结果是相同的.
- java输入输出流实例(FileInputStream、FileOutputStream实例)
- java输入输出流实例(FileInputStream、FileOutputStream实例)
- java输入输出流实例(FileInputStream、FileOutputStream实例)
- Java的文件字节流FileInputStream/FileOutputStream实例
- FileInputStream和FileOutputStream应用实例
- 字节输入输出流:java.io.FileInputStream和java.io.FileOutputStream
- java输入输出流FileInputStream,FileOutputStream,BufferedInputStream,BufferedOutputStream知识点总结
- java IO操作:FileInputStream,FileOutputStream,FileReader,FileWriter实例
- java中FileInputStream和FileOutputStream的使用实例
- java IO操作:FileInputStream,FileOutputStream,FileReader,FileWriter实例
- [Java] FileInputStream/FileOutputStream 字节流
- Java - 字节流 - FileInputStream - FileOutputStream
- java 输入输出流的理解 FileOutputStream和FileInputStream的主导者
- Java的三种输入输出流FileOutputStream、FileInputStream; FileWrite、FileReader;OutputStreamWrit、InputStreamRead
- java输入输出流实例
- IO 输入输出 流 基本概念整理(FileInputStream,FileOutputStream)
- 文件输入输出流的简单原理---fileoutputstream/fileinputstream
- Java 字节流InputStream、OutputStream、FileInputStream、FileOutputStream
- java 位流(上)
- java位流(下)
- web开发者不可或缺的Eclipse插件
- ASP.NET2.0邮件系统System.Net.Mail
- Qomo之快速上手
- java输入输出流实例(FileInputStream、FileOutputStream实例)
- sqlserver2005 数据挖掘控件研究
- CSS相关
- 写出来可以不用
- 美欲用自我复制机器人10年内吞噬所有沙漠
- java.lang.NumberFormatException: For input string
- [袁岳]大学生职业准备八指标
- sqlserver2005的KPI展示控件开发详解
- 在QTP中使用描述性编程(实例)