之前是学习到了有关文件的操作,主要是对文件进行创建删除查找搜索等等。~现在就可以对文件进行一些简单的操作了。比如读和写~
这里所说的IO流就是对应的InputStream和OutputStream。分别是字节输入流和字节输出流。我觉得这里有一处容易混淆的是呢InputStream字节输入流可能我们在字面理解输入就是往文件里输入么?但。。恰恰相反。这里的流的源头是文件,所以输入是从文件往外,而OutputStream输出流才是向文件方向的。。刚开始接触感觉好容易弄混的。多多练习敲敲代码就ok啦。
下面总结一下这个IO流的简单的使用:
public static void copyFile(){
try {
//实例化一个InputStream对象
InputStream is = new FileInputStream("src/IOStream.java");
//实例化一个数组,长度为文件的长度
byte array[] = new byte[is.available()];
//进行read操作,并将结果存入array数组中
is.read(array);
//实例化一个OutputStream对象
OutputStream os = new FileOutputStream("src/IOFileTest.txt");
os.write(array);
System.out.println("文件拷贝成功");
is.close();
os.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
上面一段代码就是对InputStream和OutputStream的一个简单的操作,功能相当于文件的拷贝。
感觉有几个需要注意的地方。首先~~查看API就会知道我们使用的InputStream和OutputStream都是抽象类,Abstract Class。因为抽象类无法实例化,所以我们是通过FileInputStream和FleOutputStream这两个子类来进行实例化的。还有就是进行读写的时候,也可以采用另一种方法,就是一个字节一个字节的读和写~~那样的话,代码会比这种的多~~所以木有采用。
其他都很简单的,执行这一段代码之后的效果就是在src下面又生成了一个Txt文件,内容就是与这段代码相同的~~
所说的都是字节输入输出流。还有一种就是过滤流(结点流):BufferedInputStream和BufferedOutputStream。这个与字节流不同的是在执行的时候会创建一个缓冲区,在读取的时候是要先存入这个缓冲区,当缓冲区存满之后在讲所有字节读取出去。这种方法与字节流那一个字节一个字节的传输在效率上肯定有所提高。
代码的实现,与字节流很相似的~~只有些许的不同:
首先,我们看下API,BufferedInputStream和BufferedOutputStream这两个类的构造方法,都是要传一个InputStream或者OutputStream流的参数的,所以再实例化的时候还是要先实例化一个字节输入输出流的对象,再作为参数传给缓冲流的实例化。
其次使用缓冲流的时候还要用到另一个方法: flush()。他的作用是刷新缓冲流。就是命令缓冲区的字节内容写入到输出流中,如果使用缓冲流的时候木有调用这个方法,那么在所要拷贝的文档中是看不到任何内容的。~~
分享到:
相关推荐
在Java中,文件操作主要涉及到两个核心类:`java.io.File` 和 `java.nio.file.Files`。`File` 类是旧的I/O流模型的一部分,而`Files` 类则是NIO(New IO)框架的一部分,提供了一种更现代且功能更强大的方式来处理...
高中英语语法——动词ing形式的用法 动词-ing形式是在英语语法中非常重要的一种非谓语动词形式,它可以在句子中作主语、宾语、表语、定语、状语、宾补等多种成分。下面我们将对动词-ing形式的用法进行详细的分析和...
在深入探讨Hadoop源码中的`NativeIO.java`之前,我们先来理解一下Hadoop的基本概念。Hadoop是一个开源框架,主要用于处理和存储大量数据,它支持分布式计算模型,是大数据处理领域的重要工具。Hadoop的核心组件包括...
高中英语语法中,动词ing形式(也称为动名词)是英语学习中的一个重要概念,它在句子中有着多种用途。动词ing形式的构成是在动词后加上-ing,例如do-doing,be-being,ask-asking等。动词ing形式不具备人称和数的...
通过分析这些信息,我们可以推测这份面试题涵盖了2011年Java开发的关键技术,如多线程、JVM内存管理、集合框架、异常处理、IO流、网络编程、设计模式等。同时,还可能涉及数据库操作(如SQL查询)、Java EE基础、Web...
十余年JAVA从业经验,精通JAVA技术体系,有志于做JAVA技能提升的朋友可与我联系,交个朋友 十余年JAVA从业经验,精通JAVA技术体系,有志于做JAVA技能提升的朋友可与我联系,交个朋友 十余年JAVA从业经验,精通JAVA...
数据结构与算法分析——Java语言描述(第二版)是普林斯顿大学Mark Allen Weiss的经典之作,但是网上很少能找到Java描述第二版的课后习题,连作者的个人主页也明确表示不提供课后习题,只能到出版商那里去索取,这个...
java ing 小杨-day03.rar
java ing 小杨-day02.rar
java ing 小杨-day01.rar
【标题】:“毕业设计——社会捐赠监督” 在当今社会,公益捐赠已经成为许多企业和个人积极参与的活动,为了确保捐赠过程的透明度和公正性,社会捐赠监督系统显得尤为重要。本毕业设计旨在开发一个基于Java ...
《阿里巴巴 Java 编码指南》是业界广泛采用的编码规范,旨在提高代码质量和开发效率,尤其对于使用 IntelliJ IDEA 的开发者来说,此指南的兼容性更新至 2023.3+ 版本,确保了最新的开发环境支持。这份指南在 2024 年...
这两本名为“Java夜未眠”和“编程ING”的书籍,针对的是已经具备面向对象基础的学习者,无论是初入Java世界的爱好者还是经验丰富的开发者,都能从中获得深入的理解和提升。 "Java夜未眠"可能是一本专注于Java编程...
在本资源中,我们拥有两个iOS应用的源代码——"inG_Calculator"的版本1.53。这个压缩包对于iOS开发者来说是一个宝贵的参考资料,尤其是那些正在学习或想要深入理解计算器应用开发的人员。下面我们将详细探讨iOS应用...
在这个"cakephp框架 学习ing"的主题中,我们将深入探讨 CakePHP 的核心特性、优势以及如何开始学习和使用它。 首先,让我们了解MVC模式。MVC是一种软件设计模式,将业务逻辑(Model)、用户界面(View)和数据控制...
import java.io.FileNotFoundException; import java.io.IOException; import java.math.BigInteger; import java.security.DigestInputStream; import java.security.MessageDigest; import java.security....
《C语言第四版》是计算机编程领域中一本经典的教材,主要针对C语言的学习者,尤其适合初学者。C语言作为一种基础且强大的编程语言,被广泛应用于系统编程、软件开发、设备驱动等多个领域。本资源包括了《C Primer ...
自学ing,存放学习笔记 目录 JavaSE 面向对象 Java集合 常用类 异常 枚举类 注解 泛型 泛型本质 反射 多线程 文件类和IO流 Java8新特性 JDBC JavaSE易错点 JavaAdvance 活动 RPC 分散ID API网关 杰克逊 ...
import java.io.IOException; public class IpLocation { public static void main(String[] args) { try (DatabaseReader reader = new DatabaseReader.Builder(new File("path_to_database")).build()) { ...