FileOutputStream 类 和 FileInputStream类的简单介绍,附代码演示。以及一个复制媒体文件的小程序。
一、FileOutputStream类。
构造函数:FileOutputStream fos = new FileOutputStream(String fileName);//参数为相关联的文件路径及名称。
主要方法:viod write(byte []b);//将b.length 个字节写入到目的文件中去。
void write(byte []b,int off,int len);//将指定数组中偏移量off开始的len个字节写入该文件中。(未演示)
void fiush();//刷新该流,将该流中的字节刷到目的文件中去。
void close();//关闭此流,并释放所有与该流相关的资源。同样关闭前先调用flush()方法。
构造函数:FileInputStream fis = new FileInputStream(String fileName);//参数为相关联的文件路径及名称。
主要方法:int read();//从此流中读取下一个数据字节。
int read(byte[] b);//从此流中读取b.length个字符到该byte数组中。
int read(byte[] b,int off,int len);//将此流中的len个字节数据读入到byte数组偏移off(含off)向后位置中。(未演示)
int available();//返回剩余的文件字节数。
package ByteStream;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;public class ByteStreamDemo {/** * @param args * @throws IOException */public static void main(String[] args) throws IOException {//demo_Write();demo_Read();}public static void demo_Read() throws IOException {FileInputStream fis = new FileInputStream("C:\\out_Stream.txt");//System.out.println(fis.available());//打印文件所占字节数。//byte []bfr = new byte[fis.available()];//不建议使用,当文件过大时,会照成内存不足。//fis.read(bfr);//System.out.println(new String(bfr));//推荐使用这个。byte[]ch = new byte[1024];int len = 0;while((len = fis.read(ch)) != -1){System.out.println(new String(ch,0,len));}//int ch = 0;//while((ch = fis.read()) != -1){//System.out.print((char)ch);//}//int ch = fis.read();//System.out.println((char)ch);fis.close();}public static void demo_Write() throws IOException {//创建字节输出流对象。用于操作文件。FileOutputStream fos = new FileOutputStream("C:out_Stream.txt");//写字节数据。fos.write("hello!FileOuyputStream!".getBytes());fos.close();}}
package ByteStream;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;public class CopyMp3 {public static void main(String[] args) throws IOException {//copy_Show1();//copy_Show2();//copy_Show3();copy_Show4();//copy_Show5();}public static void copy_Show5() throws IOException {/** * 没用缓冲技术,超级慢。。。! */FileInputStream fis = new FileInputStream("f:\\王强 - 不想让你哭.mp3");FileOutputStream fos = new FileOutputStream("f:\\王强 - 不想让你哭(6).mp3");int ch = 0;while ((ch = fis.read()) != -1) {fos.write(ch);}fis.close();fos.close();}public static void copy_Show4() throws IOException {//不建议使用。当文件过大时,会内存溢出!FileInputStream fis = new FileInputStream("f:\\王强 - 不想让你哭.mp3");BufferedInputStream bufis = new BufferedInputStream(fis);FileOutputStream fos = new FileOutputStream("f:\\王强 - 不想让你哭(5).mp3");BufferedOutputStream bufos = new BufferedOutputStream(fos);byte []b = new byte[bufis.available()];bufis.read(b);bufos.write(b);bufis.close();bufos.close();}public static void copy_Show3() throws IOException {FileInputStream fis = new FileInputStream("f:\\王强 - 不想让你哭.mp3");BufferedInputStream bufis = new BufferedInputStream(fis);FileOutputStream fos = new FileOutputStream("f:\\王强 - 不想让你哭(4).mp3");BufferedOutputStream bufos = new BufferedOutputStream(fos);int ch = 0;while ((ch = bufis.read()) != -1) {bufos.write(ch);}bufis.close();bufos.close();}public static void copy_Show2() throws IOException {FileInputStream fis = new FileInputStream("f:\\王强 - 不想让你哭.mp3");BufferedInputStream bufis = new BufferedInputStream(fis);FileOutputStream fos = new FileOutputStream("f:\\王强 - 不想让你哭(3).mp3");BufferedOutputStream bufos = new BufferedOutputStream(fos);byte[] mybufb = new byte[1024];int len = 0;while ((len = bufis.read(mybufb)) != -1) {bufos.write(mybufb, 0, len);bufos.flush();}bufis.close();bufos.close();}public static void copy_Show1() throws FileNotFoundException, IOException {FileInputStream fis = new FileInputStream("f:\\王强 - 不想让你哭.mp3");FileOutputStream fos = new FileOutputStream("f:\\王强 - 不想让你哭(2).mp3");byte[] mybufb = new byte[1024];int len = 0;while ((len = fis.read(mybufb)) != -1) {fos.write(mybufb, 0, len);}fis.close();fos.close();}}