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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
哈哈,博客排版真的漂亮呢~
[***.90.31.176]2024年04月27日 08时53分01秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
人生少走弯路的10条忠告
2019-04-29
测试管理工具TestDirector安装部署及常见问题解决方法
2019-04-29
启动Solr提示Java版本低,无法启动的解决办法
2019-04-29
Kafka 集群环境搭建
2019-04-29
Zookeeper集群环境搭建
2019-04-29
Redis监控程序--RedisMonitor
2019-04-29
Redis-cluster 命令查看服务情况
2019-04-29
一条数据的HBase之旅
2019-04-29
Hbase2.1.5集群环境搭建
2019-04-29
Hbase一些问题点
2019-04-29
动态代理GOF模式
2019-04-29
Java的clone():深复制与浅复制
2019-04-29
JAVA异常处理之finally中最好不要使用return
2019-04-29
Nginx与tomcat整合
2019-04-29
VMware Nat 连接固定ip设置操作详细指南
2019-04-29
大数据技术生态圈讲解
2019-04-29
Hadoop、Spark、HBase与Redis的适用性见解
2019-04-29
spark概述
2019-04-29
Hadoop、MapReduce、YARN和Spark的区别与联系
2019-04-29
我终于搞清楚了和String有关的那点事儿。
2019-04-29