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(); } }