Java SE 学习笔记12 IO流与文件读写
发布日期:2021-06-29 04:55:25 浏览次数:2 分类:技术文章

本文共 2616 字,大约阅读时间需要 8 分钟。

IO流与文件读写

文件读写

Java中通过流来读写文件,流是指一连串流动的字符,是以先进先出方式发送信息的通道。

在这里插入图片描述
输入/输出流与数据源:
在这里插入图片描述
Java流的分类:
在这里插入图片描述
输入输出流是相对于计算机内存来说的。
在这里插入图片描述

1、字节流与字符流的区别

字符流的底层就是字节流。而字符流主要是读取文本文件内容的,可以一个字符一个字符的读取,也可以一行一行的读取文本文件内容,而字节流读取单位为byte。byte作为计算机存储最基本单位,可以用字节流来读取很多其他格式的文件,比如图片视频等等。基于B/S和C/S的文件传输都可以采用字节流的形式。在读写文件需要对内容按行处理,比如比较特定字符,处理某一行数据的时候一般会选择字符流。只是读写文件,和文件内容无关的,一般选择字节流。

字节流就是按照字节来进行传输,字符流是按照字符来传输.最基本的是字节流,字符流可以说是对字节流的一个包装流,比如你知道了一个字符是8个字节,那么你让字节流一次传输8个字节,那不就相当于一次传输一个字符,也就是字符流了。

在这里插入图片描述


使用字节流不关闭执行:

package com.zy.demo2;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.OutputStream;public class StreamTest {
// 通过字节流 写文件 public static void ByteWrite() {
File file = new File("d:\\test.txt"); try {
OutputStream outputStream = new FileOutputStream(file); String textString = "Hello World!!!"; byte[] data = textString.getBytes(); outputStream.write(data); //outputStream.close(); } catch (IOException e) {
System.out.println("字节流写入文件出错。"); e.printStackTrace(); } } public static void main(String[] args) {
StreamTest.ByteWrite(); } }

结果:

在这里插入图片描述


程序运行后会发现文件中没有任何内容,这是因为字符流操作时使用了缓冲区,而 在关闭字符流时会强制性地将缓冲区中的内容进行输出,但是如果程序没有关闭,则缓冲区中的内容是无法输出的,所以得出结论:字符流使用了缓冲区,而字节流没有使用缓冲区。

在开发中是使用字节流好还是字符流好呢?
回答:使用字节流更好。所有的文件在硬盘或在传输时都是以字节的方式进行的,包括图片等都是按字节的方式存储的,而字符是只有在内存中才会形成,所以在开发中,字节流使用较为广泛。
如果要java程序实现一个拷贝功能,应该选用字节流进行操作(可能拷贝的是图片),并且采用边读边写的方式(节省内存)。

2、使用FileInputStream读取文本文件

package com.zy.demo2;import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.InputStreamReader;public class d {
/** * 文件读取(一行一行读) */ public static void readFile(){
File file=new File("D:/test.txt"); try {
InputStreamReader read = new InputStreamReader(new FileInputStream(file), "utf8"); BufferedReader bufferedReader = new BufferedReader(read); String lineTxt = null; //循环输出每一行内容 while ((lineTxt = bufferedReader.readLine()) != null) {
System.out.println(lineTxt); } read.close(); } catch (Exception e) {
e.printStackTrace(); } } public static void main(String[] args) {
d.readFile(); } }

结果:

在这里插入图片描述

3、File类

File 类的常用方法如下:

方法名称 说明
boolean exists( ) 判断文件或目录是否存在
boolean isFile( ) 判断是否是文件
boolean isDirectory( ) 判断是否是目录
String getPath( ) 返回此对象表示的文件的相对路径名
String getAbsolutePath( ) 返回此对象表示的文件的绝对路径名
String getName( ) 返回此对象表示的文件或目录的名称
boolean delete( ) 删除此对象指定的文件或目录
boolean createNewFile( ) 创建名称的空文件,不创建文件夹
long length() 返回文件的长度,单位为字节, 如果文件不存在,则返回 0L

转载地址:https://blog.csdn.net/zhangzhang__yan/article/details/107803071 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Java Web 学习笔记01 HTML基本用法
下一篇:Java SE 学习笔记11 字符串

发表评论

最新留言

哈哈,博客排版真的漂亮呢~
[***.90.31.176]2024年04月27日 08时53分01秒