`

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

    博客分类:
  • Java
阅读更多

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

/***
	 * write inputstream into file according to specified length.
	 * 
	 * @param file
	 * @param ins
	 *            : not closed
	 * @param length2
	 * @throws IOException
	 */
	public static FileOutputStream writeInputStream2File(File file,
			InputStream ins, long length2, boolean isCloseOutputStream)
			throws IOException {
		String parentDir = SystemHWUtil.getParentDir(file.getAbsolutePath());
		File fatherFile = new File(parentDir);
		if (!fatherFile.exists()) {
			fatherFile.mkdirs();
		}
		FileOutputStream outs = new FileOutputStream(file);
		int readSize;
		byte[] bytes = null;
		bytes = new byte[(int) length2];

		long length_tmp = length2;
		while ((readSize = ins.read(bytes)) != SystemHWUtil.NEGATIVE_ONE/*-1*/) {
			length_tmp -= readSize;

			outs.write(bytes, 0, readSize);
			if (length_tmp == 0) {
				break;
			}
			//非常重要,千万不能去掉!!!
			 if (length_tmp < SystemHWUtil.BUFF_SIZE/*4096*/) {
			 bytes = new byte[(int) length_tmp];
			 }
		}
		outs.flush();
		if (isCloseOutputStream) {
			outs.close();
		}
		return outs;
	}

/***
	 * Not responsible for closing the output and input stream 写入指定长度的字节到输出流
	 * 
	 * @param fin
	 * @param fout
	 *            : The divided file
	 * @param length2
	 * @throws IOException
	 */
	public static void writeFromFile2File(InputStream fin, OutputStream fout,
			long length2) throws IOException {
		
		if (length2 == 0) {// want to write zero bytes
			// if (fout != null) {
			// fout.close();
			// }
			return;
		}
		int readSize;
		byte[] bytes = null;
		if (length2 >= SystemHWUtil.BUFF_SIZE) {
			bytes = new byte[SystemHWUtil.BUFF_SIZE];
		} else {
			bytes = new byte[(int) length2];
		}

		long length_tmp = length2;
		while ((readSize = fin.read(bytes)) != SystemHWUtil.NEGATIVE_ONE) {
			
			length_tmp -= readSize;
			fout.write(bytes, 0, readSize);
			if (length_tmp == 0) {
				break;
			}
			//非常重要,千万不能删除
			 if (length_tmp < SystemHWUtil.BUFF_SIZE) {
			 bytes = new byte[(int) length_tmp];
			 }
		}

	}

	/***
	 * Responsible for closing the output stream
	 * 
	 * @param fin
	 * @param outPutFile
	 * @param length2
	 *            :The number of bytes to be written
	 * @param append
	 *            : Whether additional
	 * @throws IOException
	 */
	public static void writeFromFile2File(FileInputStream fin, File outPutFile,
			long length2, boolean append) throws IOException {
		
		if (length2 == 0) {// want to write zero bytes
			return;
		}
		FileOutputStream fout = null;
		try {
			fout = new FileOutputStream(outPutFile, append/* 追加 */);
		} catch (FileNotFoundException e1) {
			e1.printStackTrace();
		}
		try {
			writeFromFile2File(fin, fout, length2);
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			fout.flush();
			fout.close();// Close the stream
		}
	}

 上述代码见附件中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

写入文件:

/***
	 * 写入文件
	 * @param content
	 * @param charset
	 * @param readAndWriteResult
	 * @param file
	 * @throws IOException
	 */
	private static void writeStubFile(String content, String charset,  File file) throws IOException {
		FileWriterWithEncoding fileW = new FileWriterWithEncoding(file, charset);
		fileW.write(content);
		fileW.close();
		
	}

 

 

0
2
分享到:
评论

相关推荐

    易语言读写文件到字节集

    在易语言中,处理文件操作是一项基础且重要的任务,而“读写文件到字节集”则是这一任务的具体体现。字节集是易语言中用来存储二进制数据的数据类型,它在处理文件、网络传输或者内存操作时非常有用。 1. **字节集...

    文件字节倒写实验 课程设计

    在实验中,首先读取整个文件到一个字节数组`bytes`中,然后通过`Backward`方法倒序数组内容,最后将倒序后的字节数组写回文件。 6. **数组倒序**:`Backward`方法通过遍历数组的前半部分,与后半部分相应位置的元素...

    python指定写入文件时的编码格式方法

    4. 文件写入操作:在with语句之后的代码块中,f.write(content)用于将编码后的字节串写入到文件中。在Python中,写入文件的操作是通过打开文件对象的write()方法来完成的。 5. 使用注释#encoding=utf-8:这是一种非...

    python读取指定字节长度的文本方法

    总的来说,Python提供了强大的文件处理能力,通过灵活运用`open()`、`seek()`、`tell()`、`read()`和`close()`等方法,我们可以高效地处理各种文件读取需求,包括读取指定字节长度的文本。了解并掌握这些方法,对于...

    用CFile类实现文件的写入和读取

    2. **打开文件**:使用`Open`方法指定文件路径、打开模式和访问权限。例如,我们要写入文件,可以这样设置: ```cpp file.Open("output.txt", CFile::modeCreate | CFile::modeWrite); ``` 这里`"output.txt"`是...

    易语言读写文件到字节集源码.7z

    在这个“易语言读写文件到字节集源码.7z”压缩包中,包含的是使用易语言实现的读取文件内容并将其转换为字节集,以及将字节集写回文件的功能的相关源代码。 在计算机编程中,字节集(Byte Array)是一种常见的数据...

    文档格式化为指定长度(包括中文字符)mfc

    在这个场景中,我们关注的是如何使用MFC来处理字符文件,特别是进行格式化,确保文件内容按指定长度排列,包括中文字符。 首先,我们需要理解字符编码。在处理中文字符时,通常会用到UTF-8编码,因为它能很好地支持...

    java下载文件到指定路径(不打开窗口)

    ### Java下载文件到指定路径(不打开窗口) #### 概述 本文档主要介绍如何使用Java编程语言实现从网络上下载文件并将其保存至本地指定路径的功能,且在执行过程中不会弹出任何用户界面窗口。这种方法非常适合后台...

    php文件流的读取与写入

    在PHP中,使用`fopen()`函数打开文件并指定写入模式(如`'w'`、`'a'`、`'w+'`或`'x'`等)来创建或打开一个文件流。例如: ```php $fp = fopen('filename.txt', 'w'); // 打开文件用于写入,如果文件存在,内容将被...

    在文件的指定位置存放和读取数据

    在Python中,`file.write(item)`写入数据,`file.seek(0, 2)`移动文件指针到文件末尾,然后加上40(每个条目的长度)来开始写入下一行。 3. **读取文件**:当需要恢复列表框数据时,我们需要从文件中读取数据并将其...

    易语言源码文本文件字节集寻找替换.7z

    - 在处理大文件时,避免一次性加载整个文件到内存,可以分块读取和写入,以减少内存消耗。 - 文件操作过程中要注意错误处理,确保文件能正确打开、读取和关闭,防止因文件异常导致程序崩溃。 通过理解易语言中对...

    C#读取BIN文件内容

    在读取BIN文件时,我们需要创建一个`FileStream`实例,指定文件路径和访问模式(例如,`FileMode.Open`表示打开现有文件)。 ```csharp using System.IO; // 创建FileStream对象 FileStream fileStream = new ...

    易语言字节集转换16进制文本源码

    易语言中的`字节集长度`函数可以获取字节集的大小,`取字节集字节`函数可以获取指定位置的字节。 3. **16进制转换**:对每个字节进行16进制转换。在易语言中,可以使用`十六进制字符串`函数将字节转换成16进制字符...

    C# 读写二进制文件的一个示例

    这段代码创建了一个名为`binaryFile.bin`的二进制文件,并写入了5个字节的数据。`FileMode.Create`参数表示如果文件已存在,则覆盖,如果不存在,则创建新文件。 接下来是二进制文件的读取操作: ```csharp using ...

    单片机eeprom多字节读写程序源代码

    然后是使用E2Read函数从EEPROM的指定地址开始读取指定长度的数据,并将这些数据转换成字符串显示在LCD上。接着,程序通过一个循环逐个修改数组中的字节值,并用修改后的数据重新写入EEPROM。这里就涉及到对EEPROM...

    易语言取字节集数据.rar

    例如,使用“读文件到字节集”命令可以读取文件内容到字节集中,而“写字节集到文件”则可以将字节集的内容写入文件。 六、字节集在网络通信中的作用 在网络通信中,字节集用于封装和解析协议数据。易语言的“发送...

    易语言源码字节集替换.rar

    而"字节集替换"则用于在找到的位置开始,将指定长度的字节替换为新的字节集。 具体步骤可能如下: 1. 定义源字节集变量,存储需要处理的数据。 2. 使用“字节集查找”命令,查找源字节集中特定的字节序列,获取其...

    易语言源码易语言取字节集数据.rar

    1. **创建字节集**:使用`创建字节集`命令可以创建一个空的字节集,或者根据指定长度和初始值创建字节集。 2. **插入字节集**:`在字节集中插入字节`命令允许你在字节集的特定位置插入一个或多个字节。 3. **删除...

    把bin填充0xFF到指定大小(含源码)

    在mcu开发的时候, 特别是做升级文件的时候, 我们有时候需要把一个bin文件,填充指定大小,填充0xFF。 做了一个很简单的小工具,填充0xFF,到指定大小,例如16K。利用批处理就可以执行,支持相对路径。

Global site tag (gtag.js) - Google Analytics