| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Java知识库 -> IO流(Java) -> 正文阅读 |
|
[Java知识库]IO流(Java) |
目录 ? ? ? ? ? ??FileReader读取字符数据???????? 案例:使用FileWiter和FileReader实现对文本文件的复制 一、概述????????Hello,各位观众老爷,又到了每周的分享时间了,这周小的学习了Java中的IO流,在这里...算了不废话了,直接开始! ? ? ? ? IO流其实在我理解看来就分成三部分,即I、O、流。I即Input,输入。O即Output,输出。流是数据传输的总称。 ????????更通俗一点、把自己想成计算机的内存,以第一人称去理解这个问题。比如人要看书对吧,那么把书中的知识读取到自己的大脑(也就是内存)中这个操作就是输入,这个操作类比到计算机中就是从硬盘上读取数据到内存中,也就是IO流中的I(Input)。 ????????同理,我们有时候要写博客对吧,那么写博客这个操作是不是人把自己大脑(也就是内存)中想的东西写到纸上,那这个操作类比到计算机上就是把内存中的数据写到硬盘上,即IO流中的O(Output)。 ? ? ? ? 好了,上述是本人对IO流的一个最基本的理解,主要是助于快速理清Input和Output的区别,如果有错误的地方,请各位观众老爷指出。接下来正式进入IO流的探讨了! 二、File类? ? ? ? 在计算机中,对于数据的存储都离不开文件,IO流也是对文件进行操作,所以我们先来探讨File类。 2.1作用? ? ? ? File类是文件和目录名路径的抽象表示形式,其封装的并不是一个真正存在的文件,而仅仅是一个路径名,可以存在,也可以不存在。 2.2构造方法????????
???????? 2.3常用方法2.3.1创建方法
2.3.2判断方法
2.3.3获取方法
? ? ? ? 这里要提两个概念:相对路径和绝对路径?。 ? ? ? ? 相对路径:?是一个简化的路径,不以根路径为开头。如:\\a.txt 。 ? ? ? ? 绝对路径:一个完整的路径,以根路径开头。如:D:\\a.txt。 2.3.4删除方法????????
? ? ? ? 注:当待删除文件夹中还有文件夹或者文件时,是不能直接删除此文件夹的,必须!!!把该文件夹以下的文件和文件夹全部删除之后才能删除此文件夹。 三、IO流? ? ? ? 了解了File类时候,我们可以正式开始今天的探讨内容IO流了。在前面本人对IO流作了一个大概的讲述,下面我们来详细探讨! 3.1分类? ? ? ? 按数据流向:输入流和输出流 ? ? ? ? 输入流:把数据从硬盘上读取到内存中。 ? ? ? ? 输出流:? 把数据从内存中写出到硬盘上。 ???????? ? ? ? ??按数据类型:字节流和字符流 ????????字节流:读写数据以字节为单位的流。 ? ? ? ? 字符流:读写数据以字符为单位的流。 ???????? ????????在实际应用中,文件的上传下载以及传输是比较常见的。 ???????? ? ? ? ? 以下两张图概括性的描述了字节流和字符流: ????????字节流: ????????字符流: ? ? ? ? ?看完这两张图之后,我们接着再来分别对字节流和字符流进行探讨。 3.2字节流? 3.2.1字节输入流(InputStream)? ? ? ? InputStream:这个抽象类是表示字节输入流的所有类的超类。 字节输入流的共性方法;
?FileInputStream ? ? ? ??文件输入流,读取的是字节。 ? ? ? ? 构造方法:
FileInputStreram读取字节数据 ?????????1.一次读一个字符数据 ???????????????????????????????????????? ? ? ? ? 2.一次读一个字节数组的数据 ???????????????????????????????????????? ? ? ? ? 提问:如何实现图片的复制呢? 3.2.2字节输出流(OutputStream)?? ? ? ? 字节输出流,将数据以字节形式写到文件中。 ????????构造方法:
????????OutputStream写数据:
? ? ? ? 看到这里,我们就可以解决刚才的提问了。 ????????现在我们再次把目光转回刚才的问题:如何实现文本文件的复制。对了,我们可以先创建FileInputStream对象先读取需要复制的文本文件,再创建FileOutputStream对象关联需要写出的文件,通过循环进行读和写的操作,最后释放资源。 ? ? ? ? 步骤: ?????????????????????????????????????????????????????????????? ? ? ? ? 具体代码:
? ? ? ? ?两个问题: ????????????????????????????????????????????????????? 3.3字符流? ? ? ? 3.3.1字符输入流(Reader)? ? ? ? ? 读取字符信息到内存中。 ? ? ? ? ? ?字符输入流的共性方法:
?????????FileReader类? ? ? ? ? ? ? ? 构造方法:
? ? ? ? ? ??FileReader读取字符数据???????????????????????????????? ? ? ? ? 3.3.2字符输出流(Writer)? ? ? ? ? ? ? ? 将指定的字符数据写到文件中。 ? ? ? ? ? ? ? ?共性方法:
? ? ? ? FileWriter类?????????????????构造方法:
? ? ? ? ? ? ? ? 写数据方法: ???????????????????????????????? ? ? ? ? 案例:
注:FileWiter中的换行是书写"\r\n", 续写则是在创建对象时加上true。 案例:使用FileWiter和FileReader实现对文本文件的复制? ? ? ? ?这里只使用了一种方式,其他方式请各位观众老爷自己动动小手,尝试一下。
四、缓冲流? ? ? ? 缓冲流也叫高效流,是一个增强流。 4.1字节缓冲流? ? ? ? 构造方法:
举例:
4.2字符缓冲流? ? ? ? 构造方法:
? ? ? ? ? ? 举例:
字符缓冲流特有方法 : ? ? ? ? ? ? ? ? BufferedReader:? readLine(): 读取一行数据。读到最后返回空值。 ? ? ? ? ? ? ? ? BufferedWriter:? ? newLine():换行。 总结:? ? ? ? 缓冲流的作用,本人的理解就是高效,他的读写速度比基本流要快。至于验证,就交给各位观众老爷了。这里提供一个验证思路,先使用基础流读写一个文件,在读之前我们使用System.currentTimeMillis()方法,再写完文件之后,我们再次使用此方法获取时间,然后两者相减,我们就能得到其中的运行时间了。同理,我们使用缓冲流再次读取文件,比较时间。我们就可以看出两者时间的差距了。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 2:03:03- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |