Java基础篇——IO流
流
内存和存储设备之间传输数据的通道
流的分类
- 按方向划分
- 输入流(读):存储设备→内存
- 输出流(写):内存→存储设备
- 按单位划分、
- 字节流:以字节为单位,可以读写所有数据
- 字符流:以字符为单位,只能读写文本数据
- 按功能划分
- 节点流:具有实际传输数据的读写功能
- 过滤流:在节点流的基础上增强功能
字节流
字节流的父类(InputStream 、 OutStream)
文件字节流
FileInputStream
public int read(){}//读取单个字节
public int read(byte[]b) {}//读取多个字节
//读取完毕后会返回-1
FileOutputStream
public void write(int n) {}//单字节写入
public void write(byte[]b) {}//多字节写入
字节缓冲流
数据存储在缓冲区中,提高IO效率
BufferedInputStream/BufferedOutputStream
实例化字节缓冲流对象时需要一个底层流对象作为构造参数,eg:
BufferedInputStream in=new BufferedInputStream(new FileInputStream("路径"));
//缓冲区的大小为8k
对象流
ObjectInputStream/ObjectOutputStream
内存 序列化> 存储设备 反序列化> 内存
调用readObject/writeObject读写对象
(1)进行序列化和反序列化的类必须实现serializable接口
public interface Serializable {
}//该接口并没有抽象方法,只用来标记一个类可以被序列化
实例化对象流对象时也需要底层流对象作为构造参数
(2)除此之外,在此类内类类型的属性同样要实现serializable接口
(3)可以使用transient修饰符修饰类属性使其不被序列化,并且静态属性也不能序列化
(4)可以序列化一个集合来达到同时序列化多个对象的目的,此时反序列化的返回值也是一个集合
字符编码

字符流
字符流的父类(Reader 、Writer)
文件字符流
- FileReader
- FileWriter
与文件字节流实例化方法基本相同,只是传输的最小单位变为字符
文件字符流不能复制图片文件或者二进制文件
字符缓冲流
BufferedReader
//readLine()方法,读取 一行文本
BufferedWriter
//newLine()方法,写入一个换行符,便于多系统移植
打印流(PrintWriter)
转换流
可指定编码的字节字符转换流
InputStreamReader
OutputStreamWriter
例如:
new InputStreamReader(file,"UTF-8");
//file为一个底层流对象,指定用utf-8编码读取文件
File类
代表物理盘符中的一个文件或者一个文件夹
createNewFile()//创建 -一个新文件
mkdir()//创建一个新目录
delete()//删除文件或空目录
exists()//判断File对象所对象所代表的对象是否存在
getAbsolutePath()//获取文件的绝对路径
getName()//取得名字
getParent ()//获取文件/目录所在的目录
isDirectory()//是否是目录
isFile()//是否是文件
length()//获得文件的长度
listFiles()//列出目录中的所有内容
renameTo() //修改文件名为
文件过滤器
FileFilter接口
File[] array=file.listFiles(new FileFilter() {
@Override
public boolean accept(File pathname) {
if (pathname.getName().endsWith("txt"))
return true;
else
return false;
}//重写accept方法
}//匿名内部类
);//file为一个File类对象,调用listFiles方法实现过滤
Java基础篇——IO流的更多相关文章
- java基础之IO流(二)之字符流
java基础之IO流(二)之字符流 字符流,顾名思义,它是以字符为数据处理单元的流对象,那么字符流和字节流之间的关系又是如何呢? 字符流可以理解为是字节流+字符编码集额一种封装与抽象,专门设计用来读写 ...
- java基础之IO流(一)字节流
java基础之IO流(一)之字节流 IO流体系太大,涉及到的各种流对象,我觉得很有必要总结一下. 那什么是IO流,IO代表Input.Output,而流就是原始数据源与目标媒介的数据传输的一种抽象.典 ...
- Java基础之IO流整理
Java基础之IO流 Java IO流使用装饰器设计模式,因此如果不能理清其中的关系的话很容易把各种流搞混,此文将简单的几个流进行梳理,后序遇见新的流会继续更新(本文下方还附有xmind文件链接) 抽 ...
- 【java基础】]IO流
IO流 概念: 流的概念源于unix中管道(pipe)的概念,在unix中,管道是一条不间断的字节流,用来实现程序或进程间的通信,或读写外围设备,外部文件等 一个流,一定能够会有源和去向(目的地),他 ...
- java基础之 IO流
javaIO流 IO流 : (input output) 输入输出流 :输入 :将文件读到内存中 输出:将文件从内存输出到其他地方. IO技术的作用:主要就是解决设备和设备之间的数据传输问题 ...
- java基础44 IO流技术(输出字节流/缓冲输出字节流)和异常处理
一.输出字节流 输出字节流的体系: -------| OutputStream:所有输出字节流的基类(抽象类) ----------| FileOutputStream:向文件输出数据的输出字节流(把 ...
- java基础之io流总结一:io流概述
IO流概念: 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.io流是实现输入和输出的基础,可以方便的实现数据的输入和输出操作. IO流的分类: 根据处理数据类型的不同分为:字符流 ...
- 黑马程序员——JAVA基础之IO流FileReader,FileWriter
------- android培训.java培训.期待与您交流! ---------- IO(Input Output)流 IO流用来处理设备之间的数据传输 Java对数据的操作是通过流的方式 J ...
- java基础06 IO流
IO用于在设备间进行数据传输的操作. Java IO流类图结构: IO流分类 字节流: InputStream FileInputStream BufferedInputStream Output ...
- java基础之IO流及递归理解
一.IO流(简单理解是input/output流,数据流内存到磁盘或者从磁盘到内存等) 二.File类(就是操作文件和文件夹的) 1.FIleFile类构造方法 注意:通过构造方法创建的file对象是 ...
随机推荐
- 通过齐博fun函数实现调用每周赚取的积分排行使用
下面代码保存到fun函数目录即可 <?php namespace app\common\fun; use think\db; class Jfrank { /** * @param string ...
- Springboot JSON 转换:Jackson篇
本案例基于 Springboot 2.5.7 单元测试场景下进行 <!-- SpringMVC默认使用Jacson,只需要引用web启动器即可,无序单独引用Jackson --> < ...
- C#--@符号的使用(逐字字符串,跨行,声明关键字变量名)
---对字符串的使用 @可以定义逐字字符串 注意:@只对字符串常量有用 1)不需要用\\来转义非转义符号的\号 例如:@"\"="\\"2)可以实现多行字符 ...
- 使用VsCode调试UE5的PuerTs
使用VsCode调试UE5的PuerTs 1.下载测试的Demo项目 配置PuerTs的步骤这里不赘述. 2.准备工作 2.1 打开项目 正常来说,直接打开项目可以看到如下画面 如果直接点击运行,可以 ...
- 纯css爱心代码-最近超级火的打火机与公主裙中的爱心代码(简易版)
theme: cyanosis 最近打火机与公主裙中的爱心代码超级火,看着特别心动,让俺用css来写个简易版!!! 先看效果: 代码拆解: 主要是分为3大部分 分子颗粒 爱心 动画 代码实现: 分子颗 ...
- 无线adb连接
使用USB数据线连接Android设备; 在dos命令行输入adb tcpip [xxxx]命令 (例如:adb tcpip 8888,xxx代表端口号); 断开USB数据线(数据线和设备断开连接 ...
- 实现将机器A上的程序包复制到机器B并更新的脚本
一.前言 之前有写过如何在单台服务器上执行脚本自动更新程序包,但平时测试过程中相信大部分公司都是需要测试人员在服务器A上进行功能测试,测试通过后再将程序包更新到服务器B上进行安全测试或者性能测试:今天 ...
- 强软弱引用,ThreadLocal和内存泄漏
强引用 写法:Object obj=new Object() 引用强度:最强 只要被引用着,就不会被gc(垃圾回收)回收掉. 软引用 写法:SoftReference<String> sr ...
- 棋盘覆盖(java实现)
棋盘覆盖 问题描述 在一个2k×2k 个方格组成的棋盘中,恰有一个方格与其它方格不同,称该方格为一特殊方格,且称该棋盘为一特殊棋盘.在棋盘覆盖问题中,要用图示的4种不同形态的L型骨牌覆盖给定的特殊棋盘 ...
- hwlog---huawei.com/npu-exporter/utils---utils.go
// Copyright(C) 2021. Huawei Technologies Co.,Ltd. All rights reserved.// Package utils offer the so ...