//1.字节流不需要转码直接操作字节。 // 2. close 关闭资源动作要完成,无flush() //3.写数据 ,直接写入目的地File 或者 FileDescriptor。写入图像原始字节流。 //4.读数据, FileInputStream int read() 一次读取一个字节。 // 5. int read(byte[] b)从该输入流读取最多 b.length个字节的数据为字节数组。 //从该输入流读取一个字节的数据。 //6.建议 少用 int available() 文件大小。 一般用于小文件或者分段对文件读取。 // byte[] buf =new byte[fis.available]; // fis.read(buf); // //返回从此输入流中可以读取(或跳过)的剩余字节数的估计值,而不会被下一次调用此输入流的方法阻塞
package day21;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class ByteStreamDemo {
public static void main(String[] args) {
byteWriter() ;
byteReader();
}
/*
//1.字节流不需要转码直接操作字节。
// 2. close 关闭资源动作要完成,无flush()
//3.写数据 ,直接写入目的地File 或者 FileDescriptor。写入图像原始字节流。
//4.读数据, FileInputStream int read() 一次读取一个字节。
// 5. int read(byte[] b)从该输入流读取最多 b.length个字节的数据为字节数组。
//从该输入流读取一个字节的数据。
//6. 少用 int available() 文件大小。 一般用于小文件或者分段对文件读取。
// byte[] buf =new byte[fis.available];
// fis.read(buf);
//
//返回从此输入流中可以读取(或跳过)的剩余字节数的估计值,而不会被下一次调用此输入流的方法阻塞
*/
private static void byteWriter() {
FileOutputStream fileOutputStrem=null ;
try{
fileOutputStrem =new FileOutputStream("bytetest.txt");
for(int i=0;i<10;i++) {
fileOutputStrem.write("abcdefghijklmnopqwrstuvwxyz".getBytes());
}
}catch ( FileNotFoundException e){
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if(fileOutputStrem !=null){
try {
fileOutputStrem.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
private static void byteReader(){
FileInputStream fileInputStream =null;
try{
fileInputStream =new FileInputStream("bytetest.txt");
int size= fileInputStream.available();
System.out.println("size="+size);
if(size>0){
int len =0;
StringBuffer sb= new StringBuffer();
byte[] buf= new byte[1024];
while((len=fileInputStream.read(buf))!=-1){
sb.append( new String(buf,0,len));
}
System.out.println(sb.toString());
}
}catch ( FileNotFoundException e){
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
拷贝媒体文件的几种方式:
//练习拷贝 方式 1: 媒体文件 拷贝mp3 小型文件比较快。 public static void mp3Copy(String filename1 ,String filename2){ FileInputStream fis =null; FileOutputStream fos =null; try { // fis= new FileInputStream("F:\\Kugou\\Carly Rae Jepsen - Picture.mp3"); fis= new FileInputStream(filename1); //fos =new FileOutputStream("F:\\Kugou\\Picture.mp3"); fos =new FileOutputStream(filename2); byte[] buf =new byte[1024]; int len=0; while ((len=fis.read(buf))!=-1){ try { fos.write(buf,0,len); System.out.println("len ="+len); } catch (IOException e) { e.printStackTrace(); } } } catch ( IOException e){ e.printStackTrace(); }finally { if(fis!=null){ try { fis.close(); } catch (IOException e) { e.printStackTrace(); } } if(fos!=null){ try { fos.close(); } catch (IOException e) { e.printStackTrace(); } } } }
//练:2 使用缓冲区 大型 媒体文件 拷贝mp3 public static void copyPiture(){ FileInputStream fis =null; FileOutputStream fos =null; BufferedInputStream bis=null; BufferedOutputStream bos=null; try { fis= new FileInputStream("F:\\封存\\工藤静香\\20170510172403_MEtTc.jpg"); bis=new BufferedInputStream(fis); fos =new FileOutputStream("F:\\Kugou\\MEtTc.jpg"); bos=new BufferedOutputStream(fos); byte[] buf =new byte[1024]; int len=0; while ((len=bis.read(buf))!=-1){ try { bos.write(buf,0,len); bos.flush(); System.out.println("len ="+len); } catch (IOException e) { e.printStackTrace(); } } } catch ( IOException e){ e.printStackTrace(); }finally { if(bis!=null){ try { bis.close(); } catch (IOException e) { e.printStackTrace(); } } if(bos!=null){ try { bos.close(); } catch (IOException e) { e.printStackTrace(); } } } }
//练习拷贝 方式 3:fis.available() 媒体文件 不建议有可能会溢出。 public static void mp3Copy3(){ FileInputStream fis =null; FileOutputStream fos =null; String filename1="F:\\Kugou\\Carly Rae Jepsen - Picture.mp3" ; String filename2="F:\\Kugou\\Picture2.mp3"; try { // fis= new FileInputStream("F:\\Kugou\\Carly Rae Jepsen - Picture.mp3"); fis= new FileInputStream(filename1); //fos =new FileOutputStream("F:\\Kugou\\Picture.mp3"); fos =new FileOutputStream(filename2); byte[] buf =new byte[fis.available()]; try { fos.write(buf,0,fis.available()); } catch (IOException e) { e.printStackTrace(); } } catch ( IOException e){ e.printStackTrace(); }finally { if(fis!=null){ try { fis.close(); } catch (IOException e) { e.printStackTrace(); } } if(fos!=null){ try { fos.close(); } catch (IOException e) { e.printStackTrace(); } } } }
// 方式4. 千万不要用,效率没有! public static void copy_4() throws IOException { FileInputStream fis = new FileInputStream("c:\\0.mp3"); FileOutputStream fos = new FileOutputStream("c:\\4.mp3"); int ch = 0; while((ch =fis.read())!=-1){ fos.write(ch); } fos.close(); fis.close(); } }