java 读文件的几种方法(一)

来源:互联网 发布:vb中xor是什么意思 编辑:程序博客网 时间:2024/04/29 03:03
 

java 读文件的几种方法(一)

先前使用一直很混乱的使用过这些方法,但都没有好好做过总结。

这两天趁有空,小结一下。

1、输入输出流

说起 java的 读写文件不得不说java中的输入输出流对象, 被读取的对象为输入流(如某个文件,或者读取请求url返回的数据等), 被写入的对象为输出流(某文件,或写入请求url鞥)。

2、读文件的总分为两种方式: 使用输入流InputStream、使用Reader

1)、使用InputStream;

InputStream为抽象类,具体读取文件需要使用其实现类,这里又可分为两种分支: FileInputStream、BufferedInputStream,

其中三者的继承关系为


a、请看使用FileInputStream读取文件的实例

//使用FileInputStream
    public void fileInputStream(){
        File file =  new File("D:\\tempTest\\xml\\5008.xml");
        File fileTo =  new File("D:\\tempTest\\xml\\5008_to.xml");
        FileInputStream fin = null;
        FileOutputStream fos = null;
        try{
            fin = new FileInputStream(file);
               byte[] buffer = new byte[1024];
               int len=0;
               fos = new FileOutputStream(fileTo);
               while((len = fin.read(buffer))!= -1){ //1024个字节读取
                   fos.write(buffer, 0, len);
                   //System.out.write(buffer, 0, len);
               }
            
        } catch (Exception e){
            e.printStackTrace();
        } finally {
            try {
                if (fin != null) {
                    fin.close();
                }
                if (fos != null) {
                    fos.close();
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

b、使用 BufferInputStream
    public void bufferedInputStream(){
        File file =  new File("D:\\tempTest\\xml\\5008.xml");
        File fileTo =  new File("D:\\tempTest\\xml\\5008_to.xml");
        BufferedInputStream bin = null;
        BufferedOutputStream bos = null;
        try{
               //使用BufferedInputStream比FileInputStream效率高
               bin = new BufferedInputStream(new FileInputStream(file));
               byte[] buffer = new byte[1024];
               int len=0;
               bos = new BufferedOutputStream(new FileOutputStream(fileTo));
               while((len = bin.read(buffer))!=-1){ //1024个字节读取
                   bos.write(buffer, 0, len);
                   //System.out.write(buffer, 0, len);
               }
        } catch (Exception e){
            e.printStackTrace();
        } finally {
            try {
                if (bin != null) {
                    bin.close();
                }
                if (bos != null) {
                    bos.close();
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        
    }
    
注:这两种方式适合于读取二级制文件,如图片,声音、视频

0 0
原创粉丝点击