java中的File文件操作及IO流内容的详细介绍
本篇文章给大家带来的内容是关于 java中的File文件操作及IO流内容的详细介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
前言
流是干什么的:为了永久性的保存数据。
IO流用来处理设备之间的数据传输(上传和下载文件)
java对数据的操作是通过流的方式。
java用于操作流的对象都在IO包中。
java IO系统的学习,本质上就是对文件的读写操作。
File类
java中使用File来抽象一个文件,无论是普通文件还是目录,都可应对与一个File对象。
File只是抽象的代表来磁盘上的某个文件或者目录,内部实际上是依赖一个平台无关的本地文件系统类。
File无法对其所表示的文件内容进行任何读写操作(那是流做的事情)。
-
成员方法:
(1)创建功能: 【1】public boolean createNewFile() 【2】public boolean mkdir() 【3】public boolean mkdirs() (2)删除功能:public boolean delete() (3)重命名功能:public boolean renameTo(File dest) (4)判断功能: 【1】public boolean isDirectory() 【2】public boolean isFile() 【3】public boolean exists() 【4】public boolean canRead() 【5】public boolean canWrite() 【6】public boolean isHidden() (5)获取功能: 【1】public String getAbsolutePath() 【2】public String getPath() 【3】public String getName() 【4】public long length() 【5】public long lastModified() (6)高级获取功能: 【1】public String[] list() 【2】public File[] listFiles()
登录后复制
流的分类
根据数据流向的不同分为输入流和输出流。
根据处理数据类型的不同分为字节流和字符流:
(1)字符流:顾名思义,该流只能处理字符,但处理字符速度很快。
(2)字节流:可以处理所有以bit为单位存储的文件,也就是说可以处理所有的文件,但是在处理字符的速度上不如字符流。
字符流的抽象基类:
(1)Reader:字符输入流的抽象类,所有字符输入流的实现都是它的子类
(2)Writer:字符输出流的抽象类,所有字符输出类的实现都是它的子类
字节流的抽象基类:
(1)InputStream:字节输入流的抽象类,是所有字节输入流的父类
(2)OutputStream:字节输出流的抽象类,是输出字节流的所有类的超类
字符流Reader派生的子类:
(1)CharArrayReader (2)BufferedReader/LineNumberReader (3)FilterReader (4)InputStreamReader/FileReader
登录后复制字符流Writer派生的子类:
(1)BufferedWriter (2)CharArrayWriter (3)FilterWriter (4)OutputStreamWriter/FileWriter (5)PrintWriter (6)StringWriter
登录后复制字节流InputStream派生的子类:
(1)FileInputStream (2)ObjectInputStream (3)FilterInputStream/BufferedInputStream/DataInputStream/PushbackInputStream (4)SequenceInputStream (5)ByteArrayInputStream (6)StringBufferInputStream)
登录后复制字节流OutputStream派生的类:
(1)ByteArrayOutputStream (2)FileOutputStream (3)FilterOutputStream/BufferedOutputStream/DataOutputStream (4)ObjectOutputStream
登录后复制
优化读写:字节缓冲流
字节流一次读写一个数组的速度明显比一次读写一个字节的速度快很多。这是加入了数组这样的缓冲区效果。
文件字节输入流的读取时,是直接同字节流中读取的。
由于字节流是与硬件(存储介质)进行的读取,所以速度较慢。
而cpu需要使用数据时通过read()、read(byte[])读取数据时就要受到硬件IO的慢速度限制。
cpu与内存发生的读写速度比硬件IO快10倍不止,那么就可以在内存建立缓冲区优化。
优化读写的思路:
(1)在内存中建立缓冲区
(2)先把存储介质中的字节读取到缓冲区
(3)cpu需要数据时直接从缓冲区读取
(4)缓冲区要足够大,在被读完后又触发fill()函数自动从存储介质的文件字节内容中读取字节存储到缓冲区数组。
转换流
转换流是字节流通向字符流的桥梁,可以将字节流转换为字符流。
原理就是在字节流的基础上增加了编解码的操作。
字符流 = 字节流 + 编码表
FileReader、FileWriter其实底层都是字节流,只不过额外的配置一个编码器、解码器,底层用字节读数据通过解码器转换成字符,或通过编码器将字符转换为字节再输出。
以上是java中的File文件操作及IO流内容的详细介绍的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

Java 8引入了Stream API,提供了一种强大且表达力丰富的处理数据集合的方式。然而,使用Stream时,一个常见问题是:如何从forEach操作中中断或返回? 传统循环允许提前中断或返回,但Stream的forEach方法并不直接支持这种方式。本文将解释原因,并探讨在Stream处理系统中实现提前终止的替代方法。 延伸阅读: Java Stream API改进 理解Stream forEach forEach方法是一个终端操作,它对Stream中的每个元素执行一个操作。它的设计意图是处
