FileOutputStream 种 和 FileInputStream类的简单介绍,附代码演示。以及一个复制媒体文件的小程序

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()方法。

二、FileInputStrean类

构造函数: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();
	}

}