`
xiaoyao14
  • 浏览: 4419 次
文章分类
社区版块
存档分类
最新评论

文件流

    博客分类:
  • java
阅读更多

                                                  文件流

     在实现了画图板的重绘之后,下一步就是要将数据储存在硬盘之中。所谓stream(流),就是输入与输出。按照方向,分为输入inputstream和outputstream。

      其中主要有:

      基础字节流:每次读写一个字节:InputStream,OutputStream。

      缓冲流:BufferedInputStream ,BufferedOutputStream。

      从流中读取指定的数据类型的数据:DataInputStream,DataInputStream。

      下面,主要来详解基础字节流:每次读写一个字节:InputStream,OutputStream。  缓冲流:BufferedInputStream ,BufferedOutputStream。

   1::每次读写一个字节:InputStream,OutputStream。代码如下import java.io.*;

public class Fuzhi {

	public static void main(String args[]) {

		// 原文件的路径
		String path1 = "D:\\aa\\s.txt";
		// 复制文件的路径
		String path2 = "D:\\aa\\r.txt";
		Fuzhi fuzhi = new Fuzhi();

		// 读取数据
		byte[] xr = fuzhi.read(path1);

		// 写数据

		fuzhi.write(path2, xr);
		System.out.println("复制");

	}

	/**
	 * 读取文件 复制 path 路径 return 读取到的字符
	 * 
	 * @param path1
	 */

	public byte[] read(String path) {
		try {
			// 根据文件的路径构造输入流,路径是papathth1
			java.io.FileInputStream input = new java.io.FileInputStream(path);
			// 得到管道中字节数
			int int1 = input.available();
			// 定义数组保存
			byte byte1[] = new byte[int1];

			int t = input.read();
			int i = 0;
			while (t != -1) {
				// 将读取字节放入数组
				byte1[i] = (byte) t;
				// 读取下一个数组
				t = input.read();
				i++;

			}
			input.close();

			return byte1;

		} catch (Exception ef) {
			ef.printStackTrace();
		}
		return null;
	}

	/**
	 * 黏贴 xr 写入的数据
	 */
	public void write(String path, byte[] byte1) {
		try {
			// 文件输出流

			java.io.FileOutputStream output = new java.io.FileOutputStream(path);

			for (int i = 0; i < byte1.length; i++) {
				// 写字节
				output.write(byte1[i]);
			}
			// 强制输出
			output.flush();
			// 关闭
			output.close();

		} catch (Exception ef) {
			ef.printStackTrace();
		}

	}

}

这里不难看出,用一个一个字节来读取,方法十分繁杂。

 

下面用的是缓冲流来读取~相比起字节流 要方便的多

import java.io.*;

public class Jiami {

	public static void main(String args[]) {

		// 读取源文件
		String Source = "D:\\aa\\aaa.txt";
		// 复制后文件
		String Back = "src\\cc.txt";
		Jiami jiami = new Jiami();
		boolean result = jiami.Copy(Source, Back);
		System.out.print("复制结果" + result);
	}

	public boolean Copy(String Source, String Back) {
		File s = new File(Source);
		File b = new File(Back);

		try {
			// 创建输出流
			java.io.FileInputStream input1 = new java.io.FileInputStream(s);
			// 构造输入缓冲流
			java.io.BufferedInputStream input2 = new java.io.BufferedInputStream(input1);

			// 输出的
			java.io.FileOutputStream output1 = new java.io.FileOutputStream(b);
			java.io.BufferedOutputStream output2 = new java.io.BufferedOutputStream(output1);

			// int t = input2.read();
			// while (t != 1) {
			// output2.write(t);
			//// t = input2.read();
			// }
			int i = 0;
			// 输入流中读
			while ((i = input2.read()) != -1) {
				System.out.println("i=" + i);
				// 写到缓冲中输出				
				output2.write(i);
			}

			// 清空输出流的缓存并且关闭
			output2.flush();
			output2.close();

//			// 关掉input1
//			input1.close();

		} catch (Exception ef) {

			ef.printStackTrace();
		}
		return true;

	}
}

 

 

这里要记得 需要关闭的是缓冲流 input2~而不是输出流~不然就会导致无数据的输出。

其次,在运用到文件的输出与输入时,一定要记得最后的清空和关闭。

 

分享到:
评论

相关推荐

    pdf.js使用文件流预览pdf

    4. **使用文件流加载PDF**:在JavaScript中,使用PDF.js的`PDFDocumentProxy`对象加载文件流。以下是一个基本示例: ```javascript var loadingTask = pdfjsLib.getDocument({ data: yourFileStreamData, // 这里...

    .net通过文件流获取对方请求过来的文件

    文件流是.NET Framework中的一个抽象概念,它允许程序与磁盘、网络或其他存储设备上的文件进行交互。`System.IO`命名空间提供了多种类型的文件流类,如`FileStream`、`MemoryStream`和`NetworkStream`等。在本场景中...

    Web Api 通过文件流 下载文件到本地实例

    文件流在这里起着关键作用,它允许我们按需读取文件并将其发送到客户端,而不是一次性加载整个文件到内存。 2. **MVC控制器**: 在ASP.NET Web API中,控制器负责处理HTTP请求并生成响应。你需要创建一个控制器方法...

    java post文件流的操作

    在Java中,通过`HttpURLConnection`类可以轻松地实现POST请求,用于发送和接收文件流。该方法主要涉及到以下几个步骤: - **创建URL对象**:首先需要根据指定的URL地址创建一个`URL`对象。 - **设置HTTP连接属性**...

    通过url获取网络位置上的文件流

    这个过程通常涉及将URL转换为文件流,以便我们可以读取、处理或保存这些远程数据。以下是一个详细的知识点介绍,关于如何在Java中通过URL获取网络位置上的文件流。 1. **URL对象**:首先,我们需要创建一个`java...

    文件流IO,android文件流

    在Java和Android开发中,文件流(IO,Input/Output)是进行数据读写的核心机制。文件流IO允许程序从磁盘、网络或其他输入源读取数据,或将数据写入到输出目标,如磁盘、网络或打印机。下面将详细探讨文件流IO的基本...

    php文件流的读取与写入

    文件流允许开发者以低级的方式控制文件I/O,同时提供了一种跨平台的接口。本主题主要探讨的是如何使用PHP进行文件流的读取和写入。 首先,让我们来看看描述中的数字6、7和8所代表的意义: - `6`:这个数字通常指的...

    ASP.NET(C#) Web Api通过文件流下载文件的实例

    这个实例将详细讲解如何利用文件流来实现文件的下载功能。首先,我们要理解Web API的基本原理,它是一个用于构建RESTful服务的框架,允许通过HTTP协议来传输数据,而文件下载正好可以通过HTTP响应进行。 在本例中,...

    资源文件保护--加密文件流

    本文将详细探讨如何使用C++通过加密文件流的方式来实现这一目标。标题“资源文件保护--加密文件流”指出,我们将研究一种方法,利用C++编程语言,对文件进行加密处理,以确保其在传输或存储时的安全。 描述中提到的...

    文件流显示,仅供学习参考

    在IT领域,尤其是在编程中,文件流是一种处理输入/输出(I/O)操作的重要方式,尤其在C#这种面向对象的编程语言中。本文将详细探讨C#中的文件流概念、其工作原理以及如何进行实际操作。 文件流是.NET Framework提供的...

    文件流的下载和上传

    在IT行业中,文件流的下载和上传是网络应用的基础功能之一,广泛应用于各种场景,如云存储、文件共享、Web服务等。本示例聚焦于Windows Forms(WinForm)应用程序结合Web服务(Webservice)实现文件的上传和下载。...

    以文件流的方式复制文件

    文件流复制文件相关知识点 一、文件流的概念 文件流是指在计算机中对文件进行读取、写入、复制等操作的过程。文件流可以分为输入流和输出流两种,输入流用于读取文件的内容,而输出流用于写入文件的内容。在Java中...

    NPOI高级文件流

    本文将深入探讨NPOI库在处理Excel文件流中的高级应用。 一、NPOI概述 NPOI是由Apache POI项目的.NET版本,支持读取和写入Excel(XLS和XLSX格式)以及Word(DOC和DOCX格式)文件。其核心功能包括创建新的工作簿、...

    c#页面展示数据库中word文件流或实体文件内容样式

    功能:在一个页面上展示数据库中的word文件流及word实体文件的内容样式! 独特优势: 1,改变传统页面展示word的模式(传统做法是先把数据库中的word文件流转换成word实体文件保存在服务器中,然后再把实体文件...

    Struts2文件流方式导出下载excel、Txt、image图片

    Struts2提供了文件流的方式来实现这一需求,这种方式避免了在服务器上生成临时文件,提高了效率并减少了服务器存储空间的占用。下面将详细讲解如何使用Struts2的文件流技术来实现这些功能。 首先,我们需要理解文件...

    Java后端HttpClient Post提交文件流 及服务端接收文件流

    HttpClient Post提交多文件及多个普通参数,已经封装成工具类。 需传入 要请求的url 普通参数map 例 map.put("param1","张三"); 需要传入的文件流map 其中key为文件名 服务端接收无乱码。

    文件流序列化

    标题“文件流序列化”指的是使用Delphi中的文件流进行对象序列化的技术。文件流是TStream接口的一个具体实现,用于与磁盘上的文件进行交互。这种技术在数据持久化、网络通信以及跨进程通信等场景中十分常见。 ...

    vue-pdf预览pdf文件流

    在Vue.js应用中,预览PDF文件流是一个常见的需求,特别是在处理在线文档或者需要展示PDF内容的场景下。`vue-pdf`是一个强大的插件,它允许我们在Vue组件中轻松地集成PDF预览功能。这个插件是基于PDF.js库构建的,PDF...

    VC++程序设计“文件流”

    《VC++程序设计“文件流”》 在VC++编程中,文件流是处理文件输入输出的核心机制。文件流的概念源自C++标准库中的iostream,它允许开发者以一种高效且灵活的方式读写文件。本教程将针对初学者,详细介绍如何在VC++...

Global site tag (gtag.js) - Google Analytics