Java IO流

zhaoningzyn 2020-02-27 原文

Java IO流

IO流

File 类

在创建对象的时候需要传入文件的路径名,这里需要注意绝对路径和相对路径的关系:

  1. 绝对路径来说,从系统根目录开始写,这个是没有问题的。
  2. 相对路径来说,根目录是当前项目的根目录

File 类有很多的方法直接操作文件属性。

File file = new File("a.txt");
		try {
			file.createNewFile();
			System.out.println("绝对路径是: " + file.getAbsolutePath());
			System.out.println("相对路径是: " + file.getPath());
			System.out.println("文件是" + (file.canWrite()?"可":"不可") +"写的。");
			file.delete();
			File f1 = new File("a/b/c");
			f1.mkdirs();
			f1.delete();
			
		} catch (IOException e) {
			e.printStackTrace();
		}

字节输入流(InputStream)

InputStream 字节流,操作文件的子类FileInputStream调用 read() 方法,默认读一个字节,如果读到文件末尾,返回的是-1。

可以传入参数,参数是字节数组,而此时的返回值就是读入的字节数。

字节输出流(OutputStream)

输入流就比较简单,通常调用write() 方法就好了,参数传入一个需要写入的字节数组。需要注意的就是,在进行创建输出流对象的时候,FileOutputStream(String pathName,boolean append) 第二个参数表示是否在文件中追加,true为追加,false为覆盖原来内容,不追加。

字节流读二进制文件

DataInputStream 类通常用来读取二进制文件,它是 FileInputStream 的

输入流和输出流的区别

输入流和输出流是针对 jvm 来说的,从硬盘中向 jvm 中读入数据,所以就叫做input;而从 jvm 中向硬盘写出数据,所以就叫做output。

字符输入流

字节流和字符流等于是按照读入或者写入的单位不同划分的,InputStream 和 Reader 分为别是字节流和字符流的基类。

常用的子类有,BufferedReader, CharArrayReader, FilterReader, InputStreamReader, PipedReader, StringReader

把字节流转化为字符流的过程

FileInputStream fis = new FileInputStream("src\\test.txt");//创建文件字节流
InputStreamReader isr = new InputStreamReader(fis);//把字节流转化为字符流
BufferedReader br = new BufferedReader(isr);//BufferedReader 是InputStream的子类,调用这一个类的目的是使用 readLine() 方法

字符输出流

字符输出流的的基类是 Writer 类,可以读入一个字符串。比较容易接受。

对象的序列化和反序列化

  1. 序列化:把对象以字节流的形式写到文件里。
  2. 反序列化:从文件中以字节流的形式读入并返回一个对象

使用到的类 ObjectOutputStream 和 ObjectInputStream 两个类。

ObjectOutputStream write():把对象写入到文件中 ObjectInputStream read()的:从文件中读取对象。

graph TD
A[输入输出流] –> B[字节流]
A –> C[字符流]
B –> D[InputStream 输入流基类]
D –> d[ObjectOutPutStream 对象输入流]
B –> E[OutPutStream 输出流基类]
E –> e[ObjectOutPutStream 对象输出流]
C –> F[Writer 输出流基类]
C –> G[Reader 输入流基类]
D –> H[FileInputStream]
E –> I[FileOutputStream]
H –> J[DataInputStream 用于读取二进制文件]
I –> K[DataOutPutStream 用于写入二进制文件]
F –> L[FileWriter 一次写入一个字符]
G –> M[FileReader 一次读入一个字符]
E –> N[OutputStreamWriter 把字节流转化为字符流]
F –> N
posted on
2020-02-27 14:37 
starzyn 
阅读(
评论(
编辑 
收藏

 

版权声明:本文为zhaoningzyn原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/zhaoningzyn/p/12372055.html

Java IO流的更多相关文章

  1. web页面的时间传入servlet如何转换为可以存入MySQL的Date类型

    在web页面中当使用如下语句: <input type=”date” name= […]...

  2. Java Web(4)-IDEA中配置Tomcat

    一、Tomcat的安装及简单使用 在网上找到你需要安装的Tomcat版本,解压到你需要安装的目录就可以了 目录 […]...

  3. 系统学习 Java IO (三)—-FileInputStream & FileOutputStream & RandomAccessFile

    目录:系统学习 Java IO—- 目录,概览 FileInputStream 这是一个简单的Fi […]...

  4. ES系列(七):多节点任务的分发与收集实现

      我们知道,当我们对es发起search请求或其他操作时,往往都是随机选择一个coordinator发起请求 […]...

  5. JAVA 泛型

    泛型一、泛型引入package com.hspedu.generic;import java.util.ArrayList;/*** @author DL5O* @version 1.0*/@SuppressWarnings("all...

  6. 为什么阿里Java规约禁止使用Java内置线程池?

    IDEA导入阿里规约插件,当你这样写代码时,插件就会自动监测出来,并给你红线提醒。 告诉你手动创建线程池,效果 […]...

  7. 线上防雪崩利器——熔断器设计原理与实现

    前言 这是一篇根据工作中遇到的问题总结出的最佳实践。 上周六,我负责的业务在凌晨00-04点的支付全部失败了。 […]...

  8. java 之 组合模式(大话设计模式)

    代码是一门艺术,每次看完大话设计模式后都会有新的认识,有时会感叹原来还可以这样玩,相信大家都用过递归,递归的使 […]...

随机推荐

  1. 什么是DNS

    DNS,或者说域名系统,通常是学习如何配置网站和服务器的一个非常困难的部分。了解 DNS 的工作原理将有助于诊 […]...

  2. (六)JIRA MISC WORKFLOW EXTENSIONS插件

    实现自定义字段在工作流的后处理功能中增加。 没有插件的情况下只有更新域,但域有限制,没有自定义的字段可以选择, […]...

  3. 新手学习FFmpeg – 调用API完成视频的读取和输出 – vikings`s blog

    新手学习FFmpeg – 调用API完成视频的读取和输出 在写了几个avfilter之后,原本以为 […]...

  4. Windows Server 2008 R2 用于桌面应用的改造之路 – 贼寇在何方

    Windows Server 2008 R2 用于桌面应用的改造之路 2011-10-09 10:21  贼寇 […]...

  5. linux搭建ntp服务器-添加交换机客户端,windows客户端

    由于生产环境需要ntp时间同步服务器,故分享成果 [root@localhost ~]# cat /etc/r […]...

  6. 让你的app体验更丝滑的11种方法!冲击手机应用榜单Top3指日可待

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由WeTest质量开放平台团队发表于云+社区专 […]...

  7. Linux.挖矿.cpuminer方法记录

    挖矿一般都要用高端显卡做矿机, 不是一般人玩得起 这里讲的是一种用CPU来挖矿的方法, 纯玩玩, 不要指望能致 […]...

  8. 机器学习数据集大全 数据集汇总

    一、免费大数据存储库的网站 1、深度学习数据集收集网站 http://deeplearning.net/dat […]...

展开目录

目录导航