JavaIO流--文件字节流--FileInputStreamFileOutputStream
Posted 水汐音
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaIO流--文件字节流--FileInputStreamFileOutputStream相关的知识,希望对你有一定的参考价值。
FileInputStream
作用:
文件系统中的文件获取输入字节。 什么文件可用取决于主机环境。用于读取诸如图像数据的原始字节流。
构造方法:
FileInputStream(File file)
FileInputStream
,该文件由文件系统中的 File
对象 file
命名。FileInputStream(String name)
FileInputStream
,该文件由文件系统中的路径名 name
命名。常用方法
available()
read()
read(byte[] b)
b.length
个字节的数据为字节数组。read(byte[] b, int off, int len)
len
字节的数据为字节数组。close()
代码
import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; public class TestFileInputStream { public static void main(String[] args) throws IOException { //(1)数据源与应用程序之间搭建管道 FileInputStream fis=new FileInputStream("F://test.txt"); //(2)从数据源开始向应用程序中读数据 int len=0;//存储读到的字节 //中转站比较小,一次只读一个字节 while((len=fis.read())!=-1) { System.out.print((char)len); } //(3)关闭 fis.close(); } }
import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; public class TestFileInputStream { public static void main(String[] args) throws IOException { //(1)搭桥 FileInputStream fis=new FileInputStream(new File("F://test.txt")); //(2)创建大一点的中转站 byte[] buf=new byte[1024]; int len=0;//用于储存每次读到的实际字节 while((len=fis.read(buf))!=-1) { System.out.print(new String(buf,0,buf.length)); } //(3)关闭 fis.close(); } }
FileOutStream
作用:
文件输出流是用于将数据写入到输出流File
或一个FileDescriptor
。 文件是否可用或可能被创建取决于底层平台。 特别是某些平台允许一次只能打开一个文件来写入一个FileOutputStream (或其他文件写入对象)。 在这种情况下,如果所涉及的文件已经打开,则此类中的构造函数将失败。
用于写入诸如图像数据的原始字节流。
构造方法:
FileOutputStream(File file)
创建文件输出流以写入由指定的 File
对象表示的文件。
FileOutputStream(File file, boolean append)
创建文件输出流以写入由指定的 File
对象表示的文件。
apeend=true 时,表示当文件存在且不为空时再原有文件的基础上进行内容的追加。
FileOutputStream(String name)
创建文件输出流以指定名称写入文件。
FileOutputStream(String name, boolean append)
创建文件输出流以指定名称写入文件。
apeend=true 时,表示当文件存在且不为空时再原有文件的基础上进行内容的追加。
常用方法:
write(int b)
write(byte[] b)
b.length
个字节从指定的字节数组写入此文件输出流。
代码
import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; public class TestFileOutputStream { public static void main(String[] args) { //(1)搭桥 FileOutputStream fos=null; try { fos = new FileOutputStream("F://test.txt",true);//true如果磁盘上有文件,而且文件有内容,将在原来的内容的基础上进行追加 //写数据,一次写一个字节 //fos.write(97); //(2)写数据,一次写多个字节 byte[] buf="fff".getBytes(); fos.write(buf); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally { try { if(fos!=null) { //(3)关闭 fos.close(); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }
使用文件字节流实现文件复制
文件复制的原理
代码
import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; public class TestFileIO { public static void main(String[] args) { FileInputStream fis=null; FileOutputStream fos=null; try { //数据源是文件 fis=new FileInputStream("F://test.txt"); //目的地 fos=new FileOutputStream("F://target.txt"); byte[] flush=new byte[1024]; int len=0; while((len=fis.read(flush))!=-1) { fos.write(flush, 0, len); } /* * int b=0; * * while((b=fis.read())!=-1){ fos.write(b); } */ } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally { try { if(fos!=null) { fos.close(); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } try { if(fis!=null) { fis.close(); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }
以上是关于JavaIO流--文件字节流--FileInputStreamFileOutputStream的主要内容,如果未能解决你的问题,请参考以下文章
JavaIO(03)字节流--FileOutputStream
javaio流之字节流转为字符流:java.io.OutputStreamWriter和java.io.InputStreamReader