博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
写入指定长度的字节到文件
阅读量:6439 次
发布时间:2019-06-23

本文共 3035 字,大约阅读时间需要 10 分钟。

使用 ,如何把指定长度的字节写入文件呢,或者说如何从inputStream 中读取指定长度的字节写入outputStream中呢?

Java代码  
  1. /*** 
  2.      * write inputstream into file according to specified length. 
  3.      *  
  4.      * @param file 
  5.      * @param ins 
  6.      *            : not closed 
  7.      * @param length2 
  8.      * @throws IOException 
  9.      */  
  10.     public static FileOutputStream writeInputStream2File(File file,  
  11.             InputStream ins, long length2, boolean isCloseOutputStream)  
  12.             throws IOException {  
  13.         String parentDir = SystemHWUtil.getParentDir(file.getAbsolutePath());  
  14.         File fatherFile = new File(parentDir);  
  15.         if (!fatherFile.exists()) {  
  16.             fatherFile.mkdirs();  
  17.         }  
  18.         FileOutputStream outs = new FileOutputStream(file);  
  19.         int readSize;  
  20.         byte[] bytes = null;  
  21.         bytes = new byte[(int) length2];  
  22.   
  23.         long length_tmp = length2;  
  24.         while ((readSize = ins.read(bytes)) != SystemHWUtil.NEGATIVE_ONE/*-1*/) {  
  25.             length_tmp -= readSize;  
  26.   
  27.             outs.write(bytes, 0, readSize);  
  28.             if (length_tmp == 0) {  
  29.                 break;  
  30.             }  
  31.             //非常重要,千万不能去掉!!!  
  32.              if (length_tmp < SystemHWUtil.BUFF_SIZE/*4096*/) {  
  33.              bytes = new byte[(int) length_tmp];  
  34.              }  
  35.         }  
  36.         outs.flush();  
  37.         if (isCloseOutputStream) {  
  38.             outs.close();  
  39.         }  
  40.         return outs;  
  41.     }  
  42.   
  43. /*** 
  44.      * Not responsible for closing the output and input stream 写入指定长度的字节到输出流 
  45.      *  
  46.      * @param fin 
  47.      * @param fout 
  48.      *            : The divided file 
  49.      * @param length2 
  50.      * @throws IOException 
  51.      */  
  52.     public static void writeFromFile2File(InputStream fin, OutputStream fout,  
  53.             long length2) throws IOException {  
  54.           
  55.         if (length2 == 0) {
    // want to write zero bytes  
  56.             // if (fout != null) {
      
  57.             // fout.close();  
  58.             // }  
  59.             return;  
  60.         }  
  61.         int readSize;  
  62.         byte[] bytes = null;  
  63.         if (length2 >= SystemHWUtil.BUFF_SIZE) {  
  64.             bytes = new byte[SystemHWUtil.BUFF_SIZE];  
  65.         } else {  
  66.             bytes = new byte[(int) length2];  
  67.         }  
  68.   
  69.         long length_tmp = length2;  
  70.         while ((readSize = fin.read(bytes)) != SystemHWUtil.NEGATIVE_ONE) {  
  71.               
  72.             length_tmp -= readSize;  
  73.             fout.write(bytes, 0, readSize);  
  74.             if (length_tmp == 0) {  
  75.                 break;  
  76.             }  
  77.             //非常重要,千万不能删除  
  78.              if (length_tmp < SystemHWUtil.BUFF_SIZE) {  
  79.              bytes = new byte[(int) length_tmp];  
  80.              }  
  81.         }  
  82.   
  83.     }  
  84.   
  85.     /*** 
  86.      * Responsible for closing the output stream 
  87.      *  
  88.      * @param fin 
  89.      * @param outPutFile 
  90.      * @param length2 
  91.      *            :The number of bytes to be written 
  92.      * @param append 
  93.      *            : Whether additional 
  94.      * @throws IOException 
  95.      */  
  96.     public static void writeFromFile2File(FileInputStream fin, File outPutFile,  
  97.             long length2, boolean append) throws IOException {  
  98.           
  99.         if (length2 == 0) {
    // want to write zero bytes  
  100.             return;  
  101.         }  
  102.         FileOutputStream fout = null;  
  103.         try {  
  104.             fout = new FileOutputStream(outPutFile, append/* 追加 */);  
  105.         } catch (FileNotFoundException e1) {  
  106.             e1.printStackTrace();  
  107.         }  
  108.         try {  
  109.             writeFromFile2File(fin, fout, length2);  
  110.         } catch (IOException e) {  
  111.             e.printStackTrace();  
  112.         } finally {  
  113.             fout.flush();  
  114.             fout.close();// Close the stream  
  115.         }  
  116.     }  

 上述代码见附件中io0007-find_progess\src\main\java\com\io\hw\file\util\FileUtils.java

依赖的包:is_chinese-0.0.2-SNAPSHOT.jar

参考:http://hw1287789687.iteye.com/blog/2023095

写入文件:

Java代码  
  1. /*** 
  2.      * 写入文件 
  3.      * @param content 
  4.      * @param charset 
  5.      * @param readAndWriteResult 
  6.      * @param file 
  7.      * @throws IOException 
  8.      */  
  9.     private static void writeStubFile(String content, String charset,  File file) throws IOException {  
  10.         FileWriterWithEncoding fileW = new FileWriterWithEncoding(file, charset);  
  11.         fileW.write(content);  
  12.         fileW.close();  
  13.           
  14.     }  

转载地址:http://inuwo.baihongyu.com/

你可能感兴趣的文章
人工智能化发展已经到了哪一步?
查看>>
php实现上传图片保存到数据库的方法
查看>>
安卓应用安全指南 5.4.3 通过 HTTPS 的通信 高级话题
查看>>
针对CMS中的tag标签理解
查看>>
AR头显要上天!欧洲太空总署或用HoloLens维修太空站
查看>>
沃尔玛建立自家的人工智能网络,抗衡竞争对手亚马逊
查看>>
Mysql备份与还原及优化方法
查看>>
linux常用命令和选项
查看>>
sed 学习笔记(未完成)
查看>>
Eclipse保存验证JS缓慢
查看>>
2017 JMP Discovery Summit China圆满落幕
查看>>
9 Easy Steps for Successful Data Migration
查看>>
人工智能,不止于技术的革命--WOT2017全球创新技术峰会开幕
查看>>
mysql 在大型应用中的架构演变
查看>>
ibm系列文章 --> Windows 到 Linux 之旅
查看>>
全备份失败后,如何手工清除exchange日志文件,附微软KB
查看>>
java如何连接mysq之源码l讲解
查看>>
企业运维笔试考题(1)
查看>>
Mysql修改存储过程相关权限问题
查看>>
4.2权限管理
查看>>