一、Java的 IO 处理

1. input output 输入和输出

2. 输入? --学习对于学生来说 -- 由外面的信息到大脑 -- 由外存到内存

3. 输出? -- 授课对于老师来说 -- 由大脑到外部 -- 由内存到外存

4. 内存和外存? -- CPU可以直接访问的存储设备就是内存,反之就是外存

5. 内存--高速,易失,断电丢失、价格贵、容量小

6. 外存--较慢、永久、断电还在、较便宜、较大

7. 大脑记忆有限、大脑里想处理速度比较快

8. 程序都要在内存吕运行,持久保存的数据就要放在外存(硬盘属于外存)

9. 计算机外存保存数据的管理单位---文件

二、文件对象

1. 抽象 ---文件名、大小、类型、创建时间、最后修改时间...

2. Java 的 jdk里面提供了文件类型,对文件对象进行描述

3. 如何创建文件对象

1) 文件路径的分割符号 windowsXP之前,只能用 \,但其本身在编程中是转义符号,所以作为路径输出时,要用\\,windowsXP之后以及linux系统 可以使用/ 一个就可以了,也可以使用File.separator()来得到当前运行系统的路径分隔符号。

2) 文件对象可以是一个存在或不存在的文件,文件对象有方法可以创建文件,要捕获异常,文件对象不能往文件里读写数据。

3) 文件对象可以是文件夹或者文件

4) 文件夹可以创建,单个或者目录树

5) jdk里对于文件对象榀以获得所有的属性,可以设置部分属性

6) 能够进行部分基于的文件的操作,删除、改名 ....。

4. 列表文件夹下的所有的子文件和子文件夹

1) listFiles 只能得到一层

2) 递归操作,递归就是在方法里再调用方法自己3)执行时,调用代码会逐层打开新的方法体,直到最一个方法体结束返回,逐层向上返回,第一个打开的方法是最后一个关闭的,最后一个打开的方法是第一个关闭的。递归操作可以解决很多复杂过程循环,但资源消耗较大,慎用。

5. 流

1) 水流

2) 流的是水

3) 水分子

4) 给我接个水分子来我要喝,太小不好处理,没法处理

5) 处理的最小单位是水滴

6) 连续的水滴就构成了水流。

7) 源头 目标

6. 字节流

1) 流的是字节

2) 二进制位太小,没法操作,计算机处理的最小单位是字节(一个字节是8个二进制位)

3)连续的字节的传输就构成了字节流

4)源头和目标

5)输入输出 --- 方向

6) 输入流 --- 从外存到内存的字节流动

7) 输出流 --- 从内存到外存的字节流动

8) 计算机的基本数据就是字节,所有的流的本质都源于字节流。(字符流、对象流)

java里一个字符等于两个字节。

7. 字节流

1)文件字节流(端点流)

2)FileInputStream FileOutputStream

3) 一次一个字节的读取或者写入

4) 也可以以字节数组为单位读取和写入

5) 一个一个字节读取操作效率低

6) 基于文件字节流copy

7) 基于数组 copy 比单字节 copy 效率高的多,因为io开销小,但是也不能无限制的增加缓冲大小,浪费内存,还有开辟缓冲也要时间。

8)写入操作要注意,关闭前最好进行flush清空缓冲区处理,防止文件没有完全写入,而关闭输出管道。

9)操作完文件,需要用close来关闭管道。

10) 输出流如果不带append参数,则每次都新建新的文件

11)输出流如果逞append参数为true,则为追加模式,首次无文件则创建文件,如果文件存在,则在文件末尾追加。

12) 写入操作不需要提前创建文件,会自动新建

三、

1. 文件夹递归 copy

1) 输入被 copy的文件夹(考虑下判断是不是文件夹,是不是空的),全部复制到一个新的位置,保留原来的目录结构和文件名。

============================================================================================================================

一、字符流

1. 以字符为单位进行处理

2. Reader 和 writer 字符流的根类

3. FileReader 和 FileWriter 文本文件的字符流

4. 读取的单位是字符,一个或者一组,但是仍然不方便

二、缓冲流

1. 读到缓冲区里,想要多少自己来

2. 处置流(又叫缓冲流),读到东西需要进行处理后才继续

3. 不用关心字符读取多少个,可以以行为单位来读取

4. 使用起来比较灵活

三、Scanner模拟

1. New Scanner(System.in)

2. Scanner 类,其实就将 System.in (控制台产生的字节输入流),进入处理,将字节数据转换成我所需要的。

3. 数据流的来源,不只是文件

四、打印流

1. print 打印这个词,我们可以想到,它是一个字符输出流

2. PrintWriter 类可以将内存中的字节码代表的数值本身以字符串方式输出到

3. 商品管理---3.3

1) 主版本号.次版本号.编译号 (有些小修正、小修改重新编译下,每次编译,项目都产生一个编译号,用户拿到的不是源代码,而是机器码)

2)主版本号变化一般代表重大升级、主要功能变更

3)次版本号一般是小升级,奇数(测试版)和偶数(稳定版),

4) 编译修复一些小错误

5)增加菜单,输出所有商品信息到文本文档

i. 操作完毕给出文件位置

五、对象流

1) 流的是对象

2) 字节表示,计算机里的对象也是字节构成的,有他的字节结构

3) 可以把构成对象的字节序列化传输

4) 还能够将序列化的字节流还原成内存对象

5) 对象要支持序列化和反序列化

6) 举例超时空物质传输

2. 对象流--- objectInputStream objectOutputStream

1) 操作的单位是对象,对象的类要实现serializable 可序列化接口,传输时会加上对象头标记和尾标记,就可以从一串连续的字节中,截取出一个对象的字节码。

2) 读到的对象的字节码集合,如果有对应的类文件,则可以将其还原

3) 文件里保存的对象和内存中是一样的

4) 商品管理 4.0 -- 一旦主版本本升级,次版本自动归零

实现数据的读取和保存

i. 对整个 list 直接读取,因为 list 也是对象,读出来后强转成 List

ii. 刚打开文件时?

. 数据文件是否存在?

. 不存在的话, List ls = new ArrayList()

. 数据文件存在, ls = (List)ObjectInputStream对象.readObject()

java io处理_java之IO处理相关推荐

  1. java 流压缩_java之IO流:压缩文件

    在java的学习中,IO流是一个避不开的话题.在java日常的学习和使用中,为了给不同的场景提供不同的用途,IO流拥有一个庞大的方法集合.虽然给使用者提供了极大的便利,但此同时也带来了学习时的异常冗杂 ...

  2. java io 结构_java 的IO类库的基本架构

    java IO 操作的类在java.io 包中,大概可以分为以下几组: 基于字节操作的接口:InputStream 和 OutputStream 基于字符操作的接口:Writer 和 Reader 基 ...

  3. java写入简介_Java关于IO流的介绍

    2.InputStream 和 OutputStream 是两个 abstact 类,对于字节为导向的 stream 都扩展这两个基类; inputStream中的关键方法: read():方法是读取 ...

  4. java io操作_Java 的IO操作(文件的读,写操作)

    /*  * FileEditor.java  *  * Created on 2006年9月13日, 下午2:22  *  * To change this template, choose Tool ...

  5. java io顺序_Java顺序IO性能

    java io顺序 许多应用程序将一系列事件记录到基于文件的存储中,以供以后使用. 从日志记录和审核,直到在事件源设计或其紧密相关的CQRS中保留事务重做日志,这都可以是任何东西. Java具有多种方 ...

  6. java音频剪切_Java使用IO流实现音频的剪切和拼接

    需求:使用IO流将指定目录下的若干个音频文件的高潮部分,进行剪切,并重新拼接成一首新的音频文件 思路(以两首歌为例): 第一首歌有一个输入流对象bis1.第二首歌有一个输入流对象bis2,他们公用一条 ...

  7. java 文件io操作_java文件IO操作。

    public static void main(String[] args) { String filename = "F:/zhangming_test/test.txt"; S ...

  8. 用java的io做一个代码计数器,如何制作Java页面计数器_java

    大庆采油六厂采油工艺研究所 王兵 王波 常常逛WWW的人,一定对许多起始页上的计数器感兴趣.每当你光临某个站点的起始页时,它的计数器就很亲切地告诉你,从某年某月某日开始,你是第几位光临的人.你可能也想 ...

  9. Java传统的io和nio区别_Java中IO和NIO的本质和区别

    简介 终于要写到java中最最让人激动的部分了IO和NIO.IO的全称是input output,是java程序跟外部世界交流的桥梁,IO指的是java.io包中的所有类,他们是从java1.0开始就 ...

最新文章

  1. JAVA-数据库之JDBC连接MySQL数据库
  2. 第十八天 DNS服务原理及bind详细配置
  3. 动态规划-直方图最大长方形
  4. Qt 图形特效(Graphics Effect)介绍
  5. Storm集群使用DRPC功能Version1.0.1
  6. SharePoint Manager 2007 国外高人写的管理工具,有特色,对学习moss有帮助
  7. 整天做办公室的我们要注意饮食啊
  8. 页面跳转与重定向(之一)
  9. MapBox定位与离线地图下载Android
  10. 宁夏诗词学会红寺堡采风专辑
  11. 多比特杯第四届ACM程序设计竞赛同步赛
  12. 关于Sentinel-2快速查询图幅号——使用MGRS_100kmSQ_ID_File_Geodatabase快速查询
  13. 笔记本电脑连接加密无线路由器。
  14. 位置信息、定位技术与位置服务
  15. Linkflow+表单工具:赋能表单数据,提升表单营销能力
  16. python + selenium + unittest 实现网站登录注册自动化测试
  17. CSS颜色代码大全及a标签超链接颜色改变
  18. css实现单边斜切效果
  19. php怎么给文章加页码,PPT如何插入页码
  20. 小米天气api html,小米天气app

热门文章

  1. java.sql.SQLException: 无法转换为内部表示原因及解决办法
  2. 【ThinkPad E470C 】基本完美 附带镜像EFI等工具-Mojave后续自己升级为10.14
  3. 下机数据处理:拼接、过滤和去嵌合
  4. 【Unity】加载时 Newtonsoft.Json 提示 Metadata file `Newtonsoft.Json.dll` does not contain valid metadata
  5. 你是人间的四月天(3)
  6. QQ圈子:实名社交的潘多拉魔盒
  7. 【苹果电脑装Windows7驱动大全、Macbook电脑win7驱动安装】
  8. 《老猿Python精品文章》专栏文章目录
  9. Oracle之cmd 常用命令
  10. 数字IC手撕代码-流水握手(利用握手解决流水线断流、反压问题)