JAVA中OutStream中方法WRITE用法

来源:互联网 发布:java日志级别大小 编辑:程序博客网 时间:2024/06/06 00:09

看帮助文档

void write(byte[] b)
         将 b.length 个字节从指定的 byte 数组写入此输出流。
void write(byte[] b, int off, int len)
         将指定 byte 数组中从偏移量 off 开始的 len 个字节写入此输出流。
abstract  void write(int b)
         将指定的字节写入此输出流。

 

 

package com.test;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Queue;
import java.util.Timer;
import java.util.TimerTask;
import java.util.concurrent.ConcurrentLinkedQueue;
import java.util.*;

//文件输入输出流 读写测试
public class ReadFromFile {
 public static void main(String[] args) throwsException {

   File myFile = newFile("F:/setup_8.2.0.2002o.exe");
  System.out.println("myFile.lenght=" + myFile.length());
  System.out.println("myFile.lenght=" + myFile.length() / 1024);

  readFileByBytes("F:/setup_8.2.0.2002o.exe");
 }

 
 public static void readFileByBytes(StringfileName) {
  File file = newFile(fileName);
  int count = 0;
  InputStream in = null;
  FileOutputStream fout =null;
  boolean firsta = true;
  try {
   System.out.println("以字节为单位读取文件内容,一次读多个字节:");
   //一次读多个字节
   byte[]tempbytes = new byte[8*8192];
   int byteread= 0;
   intpauseLength=0;
   intcurrentLength=0;
   in = newFileInputStream(fileName);
   ReadFromFile.showAvailableBytes(in);
//   in.skip(704*1024);// 截掉已下载的数据
   ReadFromFile.showAvailableBytes(in);
   File file3 =new File("F:/new.add");
   if(!file3.exists()) {
    file3.createNewFile();
   }else{
    pauseLength= (int) file3.length();
   }

   
//   fout = newFileOutputStream(file3);
   fout = newFileOutputStream(file3,true); //表示将以追加方式,在原来文件上写数据。

   //读入多个字节到字节数组中,byteread为一次读入的字节数
   while((byteread = in.read(tempbytes)) != -1) {
    //System.out.write(tempbytes, 0, byteread);
    intlength = Math.min(tempbytes.length, byteread);
    currentLength+=length;
    
    System.out.println("\n"+ "tempbytes.length=" + tempbytes.length
      +" count=" + count + " byteread=" + byteread + " length="
      +length+" currentLength="+currentLength);
    
    
    if((pauseLength>0)&&(pauseLength<= currentLength)) {
     fout.write(tempbytes,pauseLength%length, length-pauseLength%length);
     
     System.out.println("\n"+ "pauseLength=" + pauseLength
       +" currentLength=" + currentLength + " pauseLength%length=" +pauseLength%length
       +" length-pauseLength%length="+ (length-pauseLength%length)
       +"currentLength="+currentLength+"file3.length="+file3.length());
     
     pauseLength=0;
    }elseif(pauseLength==0){
     fout.write(tempbytes,0, length);
    }
    count++;

   }
   

  } catch (Exception e1){
   e1.printStackTrace();
  } finally {
   if (in !=null) {
    try{
     in.close();
    }catch (IOException e1) {
    }
   }
   if (fout !=null) {
    try{
     fout.flush();
     fout.close();
    }catch (IOException e1) {
    }
   }
  }
 }

 
 private static voidshowAvailableBytes(InputStream in) {
  try {
   System.out.println("当前字节输入流中的字节数为:"+ in.available()+"  "+in.available()/1024+"K");
  } catch (IOException e) {
   e.printStackTrace();
  }
 }

}

0 0
原创粉丝点击