java.io.File,使用该类的构造函数就可以创建文件对象,将硬盘中的一个具体的文件以 Java 对象的形式来表示。
比如能够高效读写的缓冲流;能够转换编码的转换流;能够持久化存储对象的序列化流……等等。
Java IO(Input/Output)模型是用于处理输入和输出的一种编程模型。它提供了一组类和接口,用于读取和写入数据流、文件、网络连接等。
缓冲流的基本原理,是在创建流对象时,会创建一个内置的默认大小的缓冲区数组,通过缓冲区读写,减少系统IO次数,从而提高读写的效率。
缓冲流的基本原理,是在创建流对象时,会创建一个内置的默认大小的缓冲区数组,通过缓冲区读写,减少系统 IO 次数,从而提高读写的效率。
当写出的文件存在时,一般情况会对内容进行覆盖,若想续写,需要在创建文件输出流对象时设置参数。
昨天学习了基本的一些流,作为IO流的入门,今天我们要见识一些更强大的流。比如能够高效读写的缓冲流,能够转换编码的转换流,能够持久化存储对象的序列化流等等。这些功能更为强大的流,都是在基本的流对象基础之上创建而来的,就像穿上铠甲的武士一样,相当于是对基本流对象的一种增强。
File中的方法,仅涉及到如何创建、删除、重命名等等。只要涉及文件内容的,File是无能为力的,必须由io流来完成。
当使用字节流读取文本文件时,可能会有一个小问题。就是遇到中文字符时,可能不会显示完整的字符,那是因为一个中文字符可能占用多个字节存储。所以Java提供一些字符流类,以字符为单位读写数据,专门用于处理文本文件。
一、超类: 字节流: InputStream(读入流) OutputStream(写出流) 字符流: Reader(字符 读入流) Writer (字符写出流)
看完上一个章节,你已经算一个小javaer了——知道了基本语法,学会了面向对象,开始抽象世界百态,学会了拿来主义,懂得了使用别人的程序...今天,我们将打开JAVA世界的另一扇大门—— 文件和I/O.
构造器 说明 public BufferedInputStream(InputStream is) 可以把低级的字节输入流包装成一个高级的字节缓冲输入流管道,从而提高字节输入流读数据的性能 public BufferedOutputStream(OutputStream os) 可以把低级的字节输出流包装成一个高级的字节缓冲输出流管道,从而提高写数据的性能 InputStream is = new FileInputStream("File//data.txt"); InputStream bis = new BufferedInputStream(is); OutputStream os = new FileOutputStream("File//data01.txt"); OutputStream bos = new BufferedOutputStream(os); int len; byte []buffer = new byte[1024]; while ((len = bis.read(buffer))!=-1){ bos.write(buffer,0,len); bos.flush(); 通过字节缓冲流实现将一个文件中的内容复制在另一个文件之中。
2018.6.19 1.IO 字节流 InputStream OutputStream 字符流 Reader Writer
Java是一门强大的编程语言,提供了丰富的输入输出(IO)操作,这对于数据的读取、写入和处理至关重要。IO流是Java中处理数据的一种重要机制,本文将结合代码示例深入探讨Java IO流的概念、分类、基本操作和最佳实践,帮助您更好地理解和应用这一关键概念。
当谈及Java编程的核心要素时,I/O流(输入/输出流)无疑是其中之一。I/O流在Java中扮演着重要角色,用于在程序和外部世界之间传输数据。本文将深入探讨Java中的I/O流,介绍不同类型的流以及它们在实际应用中的作用。
IO流 IO流分类 File类 注意,\在文件中是路径的分隔符,但是在java编程中一个\的意思时转义符,在java中\\或者/才是文件的分隔符 文件类里面的基础方法 文件的新建,删除 创建单层目录,多级目录 返回当前文件的子集 流的分类 文件字节输入流FileInputStream ----将文件中的数据读取出来 文件字节输出流FileOutputStream---将数据写入文件中 文件字节输入输出流复制图片案例 文件字节流非常通用,可以用来操作字符的文档,还可以用来操作其他任何文件(图片,压缩包等)
需要转换—转换流InputStreamReader、OutputStreamWriter
使用方法:read(byte[] b,int off,int len) +close()
在实际应用中,异常处理的方式都需要按照下面的结构进行,本篇为了节约篇幅,之后都将采用向上抛出的方式处理异常。
各个国家为自己国家的字符取的一套编号规则,计算机底层只能存储二进制,二进制可以转成十进制,十进制可以进行整数编号,所以计算机底层可以存储编号规则
**绝对路径:**直接指明文件在硬盘上真正存在具体位置或者是以Web站点根目录为参考的完整路径。绝对路径是规定死的目录,直观清晰,但被网页引用的文件不能随意挪动。当多个网页引用同一个文件时,所使用的路径都是相同的。
IO 即 Input/Output,输入和输出。数据输入到计算机内存的过程即输入,反之输出到外部存储(比如数据库,文件,远程主机)的过程即输出。数据传输过程类似于水流,因此称为 IO 流。IO 流在 Java 中分为输入流和输出流,而根据数据的处理方式又分为字节流和字符流。
可以这样理解: 输入流----由数据到程序 输出流----由程序到数据
流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。
在Java中,文件的输入和输出是通过流(Stream)来实现的。一个流,必有源端和目的端,它们可以是计算机内存的某些区域,也可以是磁盘文件,甚至可以是 Internet 上的某个 URL。对于流而言,我们不用关心数据是如何传输的,只需要向源端输入数据,从目的端获取数据即可。
1.java中有几种类型的流?jdk为每种类型的流提供了一些抽象类以供继承,请说出它们分别是什么?
一、Properties 1. 概述 * Properties 继承于 HashTable 用来读取配置文件,他额泛型默认为 <String, String>,其中保存的数据格式多为 key = value 或 key value 2. 常用方法 * setProperties(String key, String value) 保存一对键值对 * getProperties(String key) 通过键获取值 * stringpropertiesName() 获取 key 集合
流是一种抽象概念,它代表了数据的无结构化传递。按照流的方式进行输入输出,数据被当成无结构的字节序或字符序列。从流中取得数据的操作称为提取操作,而向流中添加数据的操作称为插入操作。用来进行输入输出操作的流就称为IO流。换句话说,IO流就是以流的方式进行输入输出
在 Java 程序中所创建的对象都保存在内存中,一旦 JVM 停止运行,这些对象都将会消失。因此以下两种情况必须通过序列化实现:
计算机只能识别二进制数据,早期由来是电信号。为了方便应用计算机,让它可以识别各个国家的文字。就将各个国家的文字用数字来表示,并一一对应,形成一张表。这就是编码表。
new RandomAccessFile()之后,若文件不存在会自动创建,存在则不创建。——该类其实内部既封装了字节输入流,又封装了字节输出流。 该类若用write()方法写整数,每次只写它的最后一个字节。而采用writeInt()方法,则可把一个整数完整地写入。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/100189.html原文链接:https://javaforall.cn
1. 标准代码(try-with-source) import java.io.*; public class TestIO { public static void main(String[] args) { try ( FileInputStream fis = new FileInputStream("d:/a.txt"); ) { StringBuilder sb = new StringBuilder();
【I/O流】 Input/Output:输入输出机制 输入机制:允许java程序获取外部设备的数据(磁盘,光盘,网络等)。 输出机制:保留java程序中的数据,输出到外部设备上(磁盘,光盘等)。
接着上篇文章,我们继续来学习 Java 中的字节流操作。 装饰者缓冲流 BufferedInput/OutputStream 装饰者流其实是基于一种设计模式「装饰者模式」而实现的一种文件 IO 流,而我们的缓冲流只是其中的一种,我们一起来看看。 在这之前,我们使用的文件读写流 FileInputStream 和 FileOutputStream 都是一个字节一个字节的从磁盘读取或写入,非常耗时。 而我们的缓冲流可以预先从磁盘一次性读出指定容量的字节数到内存中,之后的读取操作将直接从内存中读取,提高效率。下面
在上一篇的文章获取不错的浏览量后,继续加更的念头一直徘徊在心中,本来是想花段时间深入学习tomcat的,可是tomcat的源码中就有至关重要的NIO,于是得先整一下NIO,但是NIO的基础是BIO,于是这篇文章就先写IO流吧。
史上最全的知识体系脑图,覆盖所有知识点,所有细节,注意事项。 IO流:包含 java.io.File类的使用, IO原理及流的分类,节点流(或文件流):FileInputStream / FileOutputStream / FileReader / FileWriter, 缓冲流:BufferedInputStream / BufferedOutputStream ,BufferedReader / BufferedWriter,转换流:InputStreamReader / OutputStreamWriter, 标准输入/输出流,打印流(了解):PrintStream / PrintWriter,数据流(了解):DataInputStream / DataOutputStream,对象流----涉及序列化、反序列化:ObjectInputStream / ObjectOutputStream, 随机存取文件流:RandomAccessFile,对象流的使用。
在java中io流分为字节流和字符流。字节流和字符流分别对应相应的读取和写入操作。整体的功能就是实现对输入输出的操作。
最近在看《Hadoop:The Definitive Guide》,对其分布式文件系统HDFS的Streaming data access不能理解。基于流的数据读写,太抽象了,什么叫基于流,什么是流?Hadoop是Java语言写的,所以想理解好Hadoop的Streaming Data Access,还得从Java流机制入手。流机制也是JAVA及C++中的一个重要的机制,通过流使我们能够自由地操作包括文件,内存,IO设备等等中的数据。
IO流是Java中的一个重要构成部分,也是我们经常打交道的。这篇关于Java IO的博文干货满满,堪称全网前三(请轻喷!)
“老王,Java IO 也太上头了吧?”新兵蛋子小二向头顶很凉快的老王抱怨道,“你瞧,我就按照传输方式对 IO 进行了一个简单的分类,就能搞出来这么多的玩意!”
字符流继承自InputSteamReader和OutputStreamWriter
处理流:不直接连接到数据源或目的地,而是“连接”在已存在的流(节点流或处理流)之上,通过对数据的处理为程序提供更为强大的读x写功能。
在平时的一些开发中,普遍都会让脚本运行的时候,去存储一些脚本运行结果的数据,例如开发一个爬虫,这时候我们爬取下来的内容,就需要存储到本地,那么这时候就会用到一些操作文件的类。
流是个抽象的概念,是对输入输出设备的抽象,Java程序中,对于数据的输入/输出操作都是以“流”的方式进行。设备可以是文件,网络,内存等。
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
IO流结构继承图: InputStream 和 OutputStream 继承结构图:
常用的一类低级流的实现类,用来来接文件 对文件进行读写操作(功能上与RAF一致,但都有各自的优缺点)
领取专属 10元无门槛券
手把手带您无忧上云