读书人

java读取资料及文件流

发布时间: 2012-09-08 10:48:07 作者: rapoo

java读取文件及文件流

//java读取文件或是文件流的代码,涵盖了读取jar文件中的文件流,网络文件流等,有些读取方式为了防止编码转换带来的问题,采取了动态byte[]的方式读取,源码如下import java.io.BufferedInputStream;import java.io.File;import java.io.BufferedOutputStream;import java.io.IOException;import java.io.FileInputStream;import java.io.FileOutputStream;public class Util {public Util() {}/**   * 读取源文件内容   * @param filename String 文件路径   * @throws IOException   * @return byte[] 文件内容   */public static byte[] readFile(String filename) throws IOException {    File file =new File(filename);    if(filename==null || filename.equals(""))    {      throw new NullPointerException("无效的文件路径");    }    long len = file.length();    byte[] bytes = new byte[(int)len];    BufferedInputStream bufferedInputStream=new BufferedInputStream(new FileInputStream(file));    int r = bufferedInputStream.read( bytes );    if (r != len)      throw new IOException("读取文件不正确");    bufferedInputStream.close();    return bytes;}/**   * 将数据写入文件   * @param data byte[]   * @throws IOException   */public static void writeFile(byte[] data,String filename) throws IOException {    File file =new File(filename);    file.getParentFile().mkdirs();    BufferedOutputStream bufferedOutputStream=new BufferedOutputStream(new FileOutputStream(file));    bufferedOutputStream.write(data);    bufferedOutputStream.close();}/**   * 从jar文件里读取class   * @param filename String   * @throws IOException   * @return byte[]   */public byte[] readFileJar(String filename) throws IOException {    BufferedInputStream bufferedInputStream=new BufferedInputStream(getClass().getResource(filename).openStream());    int len=bufferedInputStream.available();    byte[] bytes=new byte[len];    int r=bufferedInputStream.read(bytes);    if(len!=r)    {      bytes=null;      throw new IOException("读取文件不正确");    }    bufferedInputStream.close();    return bytes;}/**   * 读取网络流,为了防止中文的问题,在读取过程中没有进行编码转换,而且采取了动态的byte[]的方式获得所有的byte返回   * @param bufferedInputStream BufferedInputStream   * @throws IOException   * @return byte[]   */public byte[] readUrlStream(BufferedInputStream bufferedInputStream) throws IOException {    byte[] bytes = new byte[100];    byte[] bytecount=null;    int n=0;    int ilength=0;    while((n=bufferedInputStream.read(bytes))>=0)    {      if(bytecount!=null)        ilength=bytecount.length;      byte[] tempbyte=new byte[ilength+n];      if(bytecount!=null)      {        System.arraycopy(bytecount,0,tempbyte,0,ilength);      }      System.arraycopy(bytes,0,tempbyte,ilength,n);      bytecount=tempbyte;      if(n<bytes.length)        break;    }    return bytecount;}}
?

读书人网 >编程

热点推荐