您的位置:首页 > 编程语言 > PHP开发

将InputStream转换成FileOutputStream并输出文件

2015-12-28 14:07 489 查看
网上搜索,发现很多人将InputStream转换成FileOutputStream时,都是通过中间变量-字节数组b[]来实现的。

代码如下:

[java]
view plaincopy

new FileOutputStream("C:/1.txt");  
InputStream fis = result.getBinaryStream(1);  
byte[] b = new byte[10*1024];  
while(fis.read(b,0,10240) != -1){  
  fos.write(b,0,10240);  
}  
fos.flush();  

这种方法的缺点是:

需要预先定义字节数组b[]的长度,如10*1024。长度太小了,则无法全部接受输入流或是出错(随便说说的,未测试,呵呵);长度太大了,则浪费空间。

 

参考java API手册,发现可以不借助字节数组(这样就不必纠结于数组大小如何定义了)就可以转换了,具体代码如下:

[java]
view plaincopy

/** 
 *作者:hellostory 
 *时间:2010-11-30 16:37 
 */  
public void test() {  
    InputStream is = null;  
    FileOutputStream fos = null;  
  
         //这里对is进行赋值,略  
          //...  
  
    // 文件输出流fos  
         // openFile()为自定义函数,判断文件是否存在等(略)  
    String fileName = "hellostory的日志.doc";  
    if(!openFile(fileName)){  
        return;  
    }  
  
    try {  
        // 打开一个已存在文件的输出流  
        fos = new FileOutputStream(fileName);  
    } catch (FileNotFoundException e) {  
        e.printStackTrace();  
    }  
  
    // 将输入流is写入文件输出流fos中  
    int ch = 0;  
    try {  
        while((ch=is.read()) != -1){  
            fos.write(ch);  
        }  
    } catch (IOException e1) {  
        e1.printStackTrace();  
    } finally{  
                  //关闭输入流等(略)  
        fos.close();  
        is.close();  
    }  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: