文件流
在实现了画图板的重绘之后,下一步就是要将数据储存在硬盘之中。所谓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~而不是输出流~不然就会导致无数据的输出。
其次,在运用到文件的输出与输入时,一定要记得最后的清空和关闭。
分享到:
相关推荐
4. **使用文件流加载PDF**:在JavaScript中,使用PDF.js的`PDFDocumentProxy`对象加载文件流。以下是一个基本示例: ```javascript var loadingTask = pdfjsLib.getDocument({ data: yourFileStreamData, // 这里...
文件流是.NET Framework中的一个抽象概念,它允许程序与磁盘、网络或其他存储设备上的文件进行交互。`System.IO`命名空间提供了多种类型的文件流类,如`FileStream`、`MemoryStream`和`NetworkStream`等。在本场景中...
在Java中,通过`HttpURLConnection`类可以轻松地实现POST请求,用于发送和接收文件流。该方法主要涉及到以下几个步骤: - **创建URL对象**:首先需要根据指定的URL地址创建一个`URL`对象。 - **设置HTTP连接属性**...
这个过程通常涉及将URL转换为文件流,以便我们可以读取、处理或保存这些远程数据。以下是一个详细的知识点介绍,关于如何在Java中通过URL获取网络位置上的文件流。 1. **URL对象**:首先,我们需要创建一个`java...
文件流在这里起着关键作用,它允许我们按需读取文件并将其发送到客户端,而不是一次性加载整个文件到内存。 2. **MVC控制器**: 在ASP.NET Web API中,控制器负责处理HTTP请求并生成响应。你需要创建一个控制器方法...
在Java和Android开发中,文件流(IO,Input/Output)是进行数据读写的核心机制。文件流IO允许程序从磁盘、网络或其他输入源读取数据,或将数据写入到输出目标,如磁盘、网络或打印机。下面将详细探讨文件流IO的基本...
文件流允许开发者以低级的方式控制文件I/O,同时提供了一种跨平台的接口。本主题主要探讨的是如何使用PHP进行文件流的读取和写入。 首先,让我们来看看描述中的数字6、7和8所代表的意义: - `6`:这个数字通常指的...
这个实例将详细讲解如何利用文件流来实现文件的下载功能。首先,我们要理解Web API的基本原理,它是一个用于构建RESTful服务的框架,允许通过HTTP协议来传输数据,而文件下载正好可以通过HTTP响应进行。 在本例中,...
本文将详细探讨如何使用C++通过加密文件流的方式来实现这一目标。标题“资源文件保护--加密文件流”指出,我们将研究一种方法,利用C++编程语言,对文件进行加密处理,以确保其在传输或存储时的安全。 描述中提到的...
在IT领域,尤其是在编程中,文件流是一种处理输入/输出(I/O)操作的重要方式,尤其在C#这种面向对象的编程语言中。本文将详细探讨C#中的文件流概念、其工作原理以及如何进行实际操作。 文件流是.NET Framework提供的...
在IT行业中,文件流的下载和上传是网络应用的基础功能之一,广泛应用于各种场景,如云存储、文件共享、Web服务等。本示例聚焦于Windows Forms(WinForm)应用程序结合Web服务(Webservice)实现文件的上传和下载。...
文件流复制文件相关知识点 一、文件流的概念 文件流是指在计算机中对文件进行读取、写入、复制等操作的过程。文件流可以分为输入流和输出流两种,输入流用于读取文件的内容,而输出流用于写入文件的内容。在Java中...
本文将深入探讨NPOI库在处理Excel文件流中的高级应用。 一、NPOI概述 NPOI是由Apache POI项目的.NET版本,支持读取和写入Excel(XLS和XLSX格式)以及Word(DOC和DOCX格式)文件。其核心功能包括创建新的工作簿、...
功能:在一个页面上展示数据库中的word文件流及word实体文件的内容样式! 独特优势: 1,改变传统页面展示word的模式(传统做法是先把数据库中的word文件流转换成word实体文件保存在服务器中,然后再把实体文件...
Struts2提供了文件流的方式来实现这一需求,这种方式避免了在服务器上生成临时文件,提高了效率并减少了服务器存储空间的占用。下面将详细讲解如何使用Struts2的文件流技术来实现这些功能。 首先,我们需要理解文件...
HttpClient Post提交多文件及多个普通参数,已经封装成工具类。 需传入 要请求的url 普通参数map 例 map.put("param1","张三"); 需要传入的文件流map 其中key为文件名 服务端接收无乱码。
标题“文件流序列化”指的是使用Delphi中的文件流进行对象序列化的技术。文件流是TStream接口的一个具体实现,用于与磁盘上的文件进行交互。这种技术在数据持久化、网络通信以及跨进程通信等场景中十分常见。 ...
在Vue.js应用中,预览PDF文件流是一个常见的需求,特别是在处理在线文档或者需要展示PDF内容的场景下。`vue-pdf`是一个强大的插件,它允许我们在Vue组件中轻松地集成PDF预览功能。这个插件是基于PDF.js库构建的,PDF...
《VC++程序设计“文件流”》 在VC++编程中,文件流是处理文件输入输出的核心机制。文件流的概念源自C++标准库中的iostream,它允许开发者以一种高效且灵活的方式读写文件。本教程将针对初学者,详细介绍如何在VC++...