java输入输出流实例(FileInputStream、FileOutputStream实例)
2008-04-13 21:32
489 查看
[align=left]例1是使用FileInputStream与FileOutputStream的一个例子.程序可以复制文件,[/align]
[align=left]它会先从来源文件读取数据至一个byte数组中,然后再将byte数组的数据写入目的文件.[/align]
[align=left]例1 FileStreamDemo.java[/align]
[align=left]import java.io.*;[/align]
[align=left]public class FileStreamDemo {[/align]
[align=left] public static void main(String[] args) {[/align]
[align=left] try {[/align]
[align=left] // 来源文件[/align]
[align=left] FileInputStream in = new FileInputStream("D:/b.txt");[/align]
[align=left] // 目的文件[/align]
[align=left] FileOutputStream out = new FileOutputStream("C:/a.txt");[/align]
[align=left] byte[] bytearray = new byte[1024];[/align]
[align=left] do {[/align]
[align=left] in.read(bytearray, 0, 1024);[/align]
[align=left] out.write(bytearray);[/align]
[align=left] } while (in.available() > 0);[/align]
[align=left] in.close();[/align]
[align=left] out.close();[/align]
[align=left] } catch (ArrayIndexOutOfBoundsException e) {[/align]
[align=left] e.printStackTrace();[/align]
[align=left] } catch (IOException e) {[/align]
[align=left] e.printStackTrace();[/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left]}[/align]
[align=left] 程序中示范了两个read()方法,一个方法可以读入指定长度的数据至数组,另一个方法一次可以读入一个字节.每次读取之后,读取的光标都会往前进,如果读不到数据刚返回-1.使用available()方法可以获得还有多少字节可以读取.[/align]
[align=left] 在不使用文件流时,记得使用close()方法自行关闭流,以释放与流相依的系统资源.[/align]
[align=left] FileOutputStream默认会以新建文件的方式来开启流.如果指定的文件名称已经存在,则原文件会被覆盖;如果想以附加的模式来写入文件,则可以在构建FileOutputStream实例时指定为附加模式.例如:[/align]
[align=left] FileOutputStream fileOutputStream = new FileOutputStream(args[1],true);[/align]
[align=left] 构建方法的第二个append参数如果设定为true,在开启流时如果文件不存在则会新建一个文件,如果文件存在就直接开启流,并将写入的数据附加至文件末端.[/align]
[align=left]----------------------------------------------------------------------------------------------------------------------[/align]
[align=left]BufferedInputStream 和 BufferedOutputStream[/align]
[align=left] java.io.BufferedInputStream与java.io.BufferedOutputStream可以为InputStream、OutputStream类的对象增加缓冲区功能,构建BufferedInputStream实例时,需要给定一个InputStream类型的实例,实现BufferedInputStream时,实际上最后是实现InputStream实例.同样地,在构建BufferedOutputStream时,也需要给定一个OutputStream实例,实现BufferedOutputStream时,实际上最后是实现OutputStream实例.[/align]
[align=left] BufferedInputStream的数据成员buf是一个位数组,默认为2048字节,BufferedOutputStream的数据成员buf 也是一个位数组,默认为512字节.[/align]
[align=left]例2是对例1的改写,不用自行设定缓冲区,比较简单且有效率.[/align]
[align=left]例2 BufferedStreamDemo.java[/align]
[align=left]import java.io.*;[/align]
[align=left]public class FileStreamDemo {[/align]
[align=left] public static void main(String[] args) {[/align]
[align=left] try {[/align]
[align=left] // 来源文件[/align]
[align=left] FileInputStream in = new FileInputStream("D:/b.txt");[/align]
[align=left] // 目的文件[/align]
[align=left] FileOutputStream out = new FileOutputStream("C:/a.txt");[/align]
[align=left] BufferedInputStream bufferedIn = new BufferedInputStream(in);[/align]
[align=left] BufferedOutputStream bufferedOut = new BufferedOutputStream(out);[/align]
[align=left] byte[] data = new byte[1];[/align]
[align=left] while (bufferedIn.read(data) != -1) {[/align]
[align=left] bufferedOut.write(data);[/align]
[align=left] }[/align]
[align=left] //将缓冲区中的数据全部写出[/align]
[align=left] bufferedOut.flush();[/align]
[align=left] //关闭流[/align]
[align=left] bufferedIn.close();[/align]
[align=left] bufferedOut.close();[/align]
[align=left] } catch (ArrayIndexOutOfBoundsException e) {[/align]
[align=left] e.printStackTrace();[/align]
[align=left] } catch (IOException e) {[/align]
[align=left] e.printStackTrace();[/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left]}[/align]
[align=left] 为了确保缓冲区中的数据一定被写出至目的地,建议最后执行flush()将缓冲区中的数据全部写出目的流中,这个范例的执行结果与例1的执行结果是相同的.[/align]
[align=left]它会先从来源文件读取数据至一个byte数组中,然后再将byte数组的数据写入目的文件.[/align]
[align=left]例1 FileStreamDemo.java[/align]
[align=left]import java.io.*;[/align]
[align=left]public class FileStreamDemo {[/align]
[align=left] public static void main(String[] args) {[/align]
[align=left] try {[/align]
[align=left] // 来源文件[/align]
[align=left] FileInputStream in = new FileInputStream("D:/b.txt");[/align]
[align=left] // 目的文件[/align]
[align=left] FileOutputStream out = new FileOutputStream("C:/a.txt");[/align]
[align=left] byte[] bytearray = new byte[1024];[/align]
[align=left] do {[/align]
[align=left] in.read(bytearray, 0, 1024);[/align]
[align=left] out.write(bytearray);[/align]
[align=left] } while (in.available() > 0);[/align]
[align=left] in.close();[/align]
[align=left] out.close();[/align]
[align=left] } catch (ArrayIndexOutOfBoundsException e) {[/align]
[align=left] e.printStackTrace();[/align]
[align=left] } catch (IOException e) {[/align]
[align=left] e.printStackTrace();[/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left]}[/align]
[align=left] 程序中示范了两个read()方法,一个方法可以读入指定长度的数据至数组,另一个方法一次可以读入一个字节.每次读取之后,读取的光标都会往前进,如果读不到数据刚返回-1.使用available()方法可以获得还有多少字节可以读取.[/align]
[align=left] 在不使用文件流时,记得使用close()方法自行关闭流,以释放与流相依的系统资源.[/align]
[align=left] FileOutputStream默认会以新建文件的方式来开启流.如果指定的文件名称已经存在,则原文件会被覆盖;如果想以附加的模式来写入文件,则可以在构建FileOutputStream实例时指定为附加模式.例如:[/align]
[align=left] FileOutputStream fileOutputStream = new FileOutputStream(args[1],true);[/align]
[align=left] 构建方法的第二个append参数如果设定为true,在开启流时如果文件不存在则会新建一个文件,如果文件存在就直接开启流,并将写入的数据附加至文件末端.[/align]
[align=left]----------------------------------------------------------------------------------------------------------------------[/align]
[align=left]BufferedInputStream 和 BufferedOutputStream[/align]
[align=left] java.io.BufferedInputStream与java.io.BufferedOutputStream可以为InputStream、OutputStream类的对象增加缓冲区功能,构建BufferedInputStream实例时,需要给定一个InputStream类型的实例,实现BufferedInputStream时,实际上最后是实现InputStream实例.同样地,在构建BufferedOutputStream时,也需要给定一个OutputStream实例,实现BufferedOutputStream时,实际上最后是实现OutputStream实例.[/align]
[align=left] BufferedInputStream的数据成员buf是一个位数组,默认为2048字节,BufferedOutputStream的数据成员buf 也是一个位数组,默认为512字节.[/align]
[align=left]例2是对例1的改写,不用自行设定缓冲区,比较简单且有效率.[/align]
[align=left]例2 BufferedStreamDemo.java[/align]
[align=left]import java.io.*;[/align]
[align=left]public class FileStreamDemo {[/align]
[align=left] public static void main(String[] args) {[/align]
[align=left] try {[/align]
[align=left] // 来源文件[/align]
[align=left] FileInputStream in = new FileInputStream("D:/b.txt");[/align]
[align=left] // 目的文件[/align]
[align=left] FileOutputStream out = new FileOutputStream("C:/a.txt");[/align]
[align=left] BufferedInputStream bufferedIn = new BufferedInputStream(in);[/align]
[align=left] BufferedOutputStream bufferedOut = new BufferedOutputStream(out);[/align]
[align=left] byte[] data = new byte[1];[/align]
[align=left] while (bufferedIn.read(data) != -1) {[/align]
[align=left] bufferedOut.write(data);[/align]
[align=left] }[/align]
[align=left] //将缓冲区中的数据全部写出[/align]
[align=left] bufferedOut.flush();[/align]
[align=left] //关闭流[/align]
[align=left] bufferedIn.close();[/align]
[align=left] bufferedOut.close();[/align]
[align=left] } catch (ArrayIndexOutOfBoundsException e) {[/align]
[align=left] e.printStackTrace();[/align]
[align=left] } catch (IOException e) {[/align]
[align=left] e.printStackTrace();[/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left]}[/align]
[align=left] 为了确保缓冲区中的数据一定被写出至目的地,建议最后执行flush()将缓冲区中的数据全部写出目的流中,这个范例的执行结果与例1的执行结果是相同的.[/align]
相关文章推荐
- java输入输出流实例(FileInputStream、FileOutputStream实例)
- java输入输出流实例(FileInputStream、FileOutputStream实例)
- java I/O流,输入流,输出流,输入输出流,InputStream,FileInputStream,文件流,byte,url
- Java输入输出流实例详解
- java输入输出流FileInputStream,FileOutputStream,BufferedInputStream,BufferedOutputStream知识点总结
- Java IO 输入输出流 实例解释
- java 输入输出流的理解 FileOutputStream和FileInputStream的主导者
- 字节输入输出流:java.io.FileInputStream和java.io.FileOutputStream
- java输入输出流实例代码
- Java文件输入/输出流 FileOutputStream和FileInputStream
- java 对象输入输出流读写文件的操作实例
- 浅谈JAVA中输入输出流实例详解
- JAVA中输入输出流的总结——FileInputStream、FileOuputStream、BufferedInputStream等
- Java输入输出流详解及应用实例
- Java基础 - 序列流,内存输出流,随机访问流,对象操作流,数据输入输出流,打印流,标准输入输出流,Properties
- java 文件输入输出流 文件夹的复制
- Java调用外部进程并拦截输入输出流--Java IDE Console解密(下篇)
- Java IO流学习总结一:输入输出流
- Java--输入输出流
- java输入输出流