开发者社区> 黄威的世界> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

写入指定长度的字节到文件

简介:
+关注继续查看

使用Java ,如何把指定长度的字节写入文件呢,或者说如何从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.     }  

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
文件的长度
文件的长度
0 0
c++ 数据字节
#include using namespace std; void main() { cout
702 0
C#字符串(字节)的长度
这么简单的问题,我都忘记了,不知道你们还记得吗,希望你们都还记得? using System; public class Test { public static void Main() { string str1 = "abced.
521 0
字节大小
首先看一个例子: 1 #include 2 using namespace std; 3 4 class A{}; 5 6 class B 7 { 8 int b; 9 char c; 10 }; 11 12 class ...
472 0
【转】字节那些事儿
1、 前言 作为一名 C/C++ 程序员,字节是我们天天都要与之打交道的一个东西。我们和它熟稔到几乎已经忘记了它的存在。可是,它自己是不甘寂寞的,或迟或早地,总会在某些时候探出头来张望,然后给你一个腿儿绊。
1013 0
字符串所占的字节长度
/*在C#中字符串"中国人民zgrm"的Length=8,即一个汉字只占一个长度;但有时候为了格式化输出的需要,我们期望得到字符串所占的字节长度,即一个汉字占两个长度,"中国人民zgrm"的长度应该为12(=4个汉字*2+4个英文字符).
517 0
+关注
黄威的世界
我是一个热衷IT技术的人,希望自己不断地设计开发出对别人非常有用的软件。有近7年的java开发经验(包括2年Android开发经验)和一年左右的linux使用经验。擅长Java Web后台开发 ,喜欢研究新的各种实用技术
文章
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载