java BIO(阻塞式IO)    java.io
核心五个类(File、Outputstream、Inputstream、Reader、Writer)一个接口(Serializable)
1.File文件操作类*****
java.IO包中,File类是唯一一个与文件本身操作(删除,创建,取得信息)有关,与文件内容无关的程序类。
1.1 File类(即可描述一个真实文件,也可是一个文件夹)的基本使用
File类的两种实例化方式:
 public File (String pathname)传绝对路径public File (String parent ,String child)

创建新文件
 public boolean createNewFile()throws IOException

判断文件是否存在
public boolean exists()

删除文件
 public boolean delete()

路径分隔符:File.separator
1.2 目录操作
1.2.1取得父路径与父FIle对象
public String getParent()
public File getParentFile()

1.2.2 创建目录(无论有多少级父目录,都会一次创建)
 public boolean mkdirs()

1.3 取得文件信息
判断File对象是否是文件
 public boolean isFile()

判断File对象是否是路径
public boolean isDirectory()

取得文件大小
 public long length()

取得最后修改日期
public long lastModified()

列举一个目录的全部组成:
 public File[ ] listFiles()

IO相关处理属于阻塞式耗时操作,一般放在子线程中进行
2.字节流与字符流
流的分类:
字节流(byte):
InputStream、OutputStream
字符流(char):
Reader、writer
字节流与字符流区别:
字节流是原生操作,字符流是处理后的操作。
一般使用字节流(无论是网络传输还是磁盘数据保存均以字节为单位),
只有处理中文文本时才会用到字符流。
2.1 流的操作流程
无论是字节流还是字符流,操作流程几乎一样,以文件操作为例:
a,取得File对象
b,取得file对象的输入,输出流
c,进行数据的读取或写入
d,关闭流(close)
IO操作属于资源处理,所有资源处理(IO 数据库, 网络)使用后都必须关闭。
2.2 字节输出流(OutputStream)
public abstract class OutputStream implements Closeable,FlushableCloseable: public void close ()throws IOExceptionFlushable: public void flush ()throws IOException

输出方法:
1,将指定的字节数组全部输出
public void write (byte[] b)throws IOException;

2,将部分字节数组输出
public void write (byte[] b, int offset,int len) throws IOExcepton;

3,输出单个字节
public abstract void write (int b)throws IOException;

要进行文件内容的输出:使用FileOutputStream子类
文件内容覆盖
public FileOutputStream(File file)throws FileNotFoundException

文件内容追加
public FileOutputStream(File file,boolean append)

当使用FileOutputStream进行文件内容输出时,只要文件的父路径存在,FileOutputStream会自动创建文件。
2.2.2AutoCloseable自动关闭支持 -JDK1.7
使用自动关闭接口有一个前提,需要结合try-catch块
2.3 字节输入流(InputStream)
输入方法read:
public int read(byte[] b) throws IOException

读取数据到字节数组b中
返回值三种情况:
I.返回b的长度:
当读取的数据大小大于字节数组大小,返回字节数组大小
II.返回大于零的数 但是小于b长度:
读取数据大小小于字节数组大小,返回真正读取个数
III.返回-1:
数据读取完毕
public int read () throws IOException

读取单个字节
2.4 字符流
字符输出流(Writer)
除了参数为字符数组外,多了一个传入String对象的方法
public void write (String str)throws IOException
字符输入流(Reader)
Reader类中没有方法可以直接读取字符串,只能通过字符数组读取。
2.5 字节流与字符流
从实际开发来讲,字节流优先考虑,只有处理中文时才考虑使用字符流
所有字符流操作,无论是写入还是输出,数据都先保存在缓存中。
2.6 转换流:将字节流->字符流
用于将底层的字节流转换为字符流供子类使用
OutputStreamWriter:字节输出流->字符输出流
InputStreamReader:字节输入流->字符输入流
 3.字符编码
3.1 GBK、GB2312:国标编码。GBK即包含简体中文也包含繁体中文,而GB2312只包含简体中文
3.2UNICODE:java提供的16进制编码,可以描述世界上任意的文字,由于采用16进制编码,导致编码的体积太大,造成网络传输负担
3.3 ISO-8859-1:浏览器默认编码,国际通用编码,不支持中文
3.4 UTF编码(UTF-8):相当于结合了ISO-8859-1和UNICODE编码,支持所有语言且体积较小。
乱码产生原因(95%):编解码不一致
4.内存流
除了文件之外,IO操作也可以发生在内存中,发生在内存中的操作称为内存流,
内存流也分为两类:
字节内存流:
ByteArrayInputStream、ByteArrayOutputStream
字符内存流
CharArrayReader、CharArrayWriter
public ByteArrayOutputStream()public ByteArrayInputStream(byte buf[ ])

  5.打印流(输出流进化版)
系统提供的两个打印流
PrintStream: 字节打印流
PrintWriter: 字符打印流
打印流应用的是装饰设计模式:核心依然是某个类(OutputStream)的功能(write()),但是为了得到更好的操作效果,让其支持的功能更多。
优点:扩展功能特别方便,需要不同的功能时只需要更换装饰类即可。
缺点:类结构复杂。
 6.System 对IO的支持
输出:(均是打印流PrintStream的对象)
-标准输出(显示器)
System.out
-错误输出()
System,err

输入:
-标准输入(键盘)
System.in

转载于:https://www.cnblogs.com/yishengPan/p/10558762.html

Java 核心五个类(File、Outputstream、Inputstream、Reader、Writer)一个接口(Serializable)...相关推荐

  1. Java第五课. 类对象

    Java第五课. 类&对象 回顾 1. 冒泡:概念,实现:2个for循环分别起的作用 2. 二维数组可以理解成表格:有行有列,行当成一维数组,列当成一维数组中的元素,行有下标(几个一维数组), ...

  2. Java第五课:类和对象

    Java第五课:类和对象 Java第五课:类和对象 1.1 上周回顾 1.2 作业讲解 1.3 类和对象: 1.4 面向对象: 1.4.1 类的概念: 1.4.2 类的基本结构: 1.4.3 对象的概 ...

  3. java有且仅有一个main_组成java Application的若干类中,有且仅有一个主类,只有主类中含有主方法main();...

    [单选题]Java 应用程序入口的 main 方法,其声明格式可以是(A) [填空题]点的水平投影与正面投影的连线( ) 于 OX 轴. [单选题]-Is there anything wrong w ...

  4. Java核心类库-IO-File类介绍和路径分割符

    Java的IO:类和接口存在于Java.io包中 讲IO操作之前,必须要先讲File类(文件/目录) File类介绍和路径分割符: File类是IO包中唯一表示磁盘文件和磁盘目录的对象的路径. 该类包 ...

  5. 02_IO操作的基本规律(InputStream,OutputStream,Reader,Writer,FileReader,FileWriter,BufferedReader,BufferedWri

     模拟BufferedInputStream,编写一个类 package toto.IO; import java.io.IOException; import java.io.InputStre ...

  6. java自学 part2 数组 类和对象 包 继承 多态 抽象类 接口

    数组:arr 获取数组的长度:arr.length 数组转字符串: Arrays.toString(arr) 数组的拷贝: Arrays.copyOf(arr,arr.length) 数组的排序:Ar ...

  7. Java 第五章 类的设计与包

    设计模式(把类的结构设计好) 单例设计模式(保证这个类的对象在内存中只有一个) 包 使用包的主要目的就是为了让可能同名的类可以在不同的包里面而同时存在. 包的导入 一个类可以随意使用在同一个包里的其他 ...

  8. Java第五次作业--面向对象高级特性(抽象类和接口)

    一.学习要点 认真看书并查阅相关资料,掌握以下内容: 掌握抽象类的设计 掌握接口的设计 理解简单工厂设计模式 理解抽象类和接口的区别 掌握包装类的应用 掌握对象的比较方法和比较器的使用 学习使用日期操 ...

  9. java http请求 工具类_java模拟http请求调用远程接口工具类

    package ln; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamRea ...

最新文章

  1. vs编译报错C1020: 意外的 #endif
  2. Python 之 matplotlib (十五)主次坐标轴
  3. ERROR 1045: Access denied for user: 'root@localhost' (Using password: YES)(转)
  4. doxygen注释规范示例(C++)
  5. ☆聊聊Spring系列_Index
  6. 中给函数赋读权限_教你如何使用MCGS昆仑通态设置密码增加权限
  7. Git异常:Cannot delete the branch 'test1' which you are currently on
  8. Vue012_ 自定义插件
  9. ios多线程 -- NSOperation 简介
  10. SQLAlchemy engine.Connection
  11. 智能排班系统、班次、班表、考勤、年假、调休、审批、请假、培训、值班、换班、加班、工时、自动排班、智能预测、人力需求预测、授权、团队、锁定量排、规则权重设置、菜单、角色、数据监控、工作台、axure
  12. Ruby——关于require与require_relative
  13. 【人脸识别】基于matlab GUI灰度化教室人数统计【含Matlab源码 602期】
  14. 动态规划之背包问题——完全背包
  15. 人工智能的主要应用领域
  16. Fusion 360 以及 API 快速了解
  17. 心态很容易受别人影响_太容易被别人影响,我上辈子可能是个“复印机”
  18. 汇编语言(王爽)期末复习
  19. Redux以及Flux介绍
  20. 道通科技自动化测试面试

热门文章

  1. Tengine(Nginx)动静分离简要配置
  2. 菜鸟的成长记录--linux 通配符和特殊字符集合的使用
  3. vyatta 6.4 的设置
  4. Internet Explorer 9 新功能:固定并快速打开常用网站
  5. Server Core 的部署与管理
  6. In和exists使用及性能分析(一):in的使用
  7. Gradle发布4.7版本,支持Java 10
  8. Vue 实践过程中的几个问题
  9. 原来华为是一家做音乐的公司
  10. Android实现按钮点击效果(第一次点击变色,第二次恢复)