2021-02-26

IO
1.IO框架介绍
IO(input/output)是计算机输入输出的接口,java核心类库java.io提供了全面的io接口,包括文件系统的操作(File),文件的读写以及标准设备输出(电脑屏幕)等等
标准设备输入指键盘输入(System.in)

2.File类及使用
代表了磁盘上的文件或目录,提供了与平台无关的方法来对磁盘上的文件或目录进行操作
没有提供方法从文件读取数据或向文件存储数据

3.在Windows下的路径分隔符和Linux下的路径分隔符是不一样的,当直接使用绝对路径时,跨平台会暴出“No such file or diretory”的异常。
比如说要在temp目录下建立一个test.txt文件,在Windows下应该这么写:
File file1 = new File (“C:\tmp\test.txt”);
在Linux下则是这样的:
File file2 = new File (“C:/tmp/test.txt”);
如果要考虑跨平台,则最好是这么写:
File myFile = new File(“C:” + File.separator + “tmp” + File.separator+“test.txt”);
4.递归算法

防止死循环
Eg:求阶乘

练习:斐波那契数列

案例:
递归遍历文件,输出文件后缀名为.docx的目录

案例:删除文件夹/文件

5.流的概念及分类
流是有顺序的,是有开始和结尾的一组数据的集合,程序需要数据的时候使用输入流读取数据,保存时需要输出流完成(输入输出是针对内存的)。

输入流/输出流,是以“内存”为参照物。
从磁盘上的文件读到内存中来,是输入流;
把内存中的数据写入磁盘文件,是输出流。
6.流的分类

节点流/过滤流:区分关键点:是否直接操作目标设备(内存或者磁盘上的文件)。
过滤流操作的是节点流,节点流直接操作目标设备。
备注:如果是文件夹复制,则字节流通用。(字符流常用于将文本文件中的内容展示到屏幕上.)
7.字节流类

InputSream抽象类

常用方法:

8.OutputStream
字节输出流,抽象类
常用方法

9.FileInputSream和FileOutputStream
常用构造方法

Eg:复制文件(不是文件夹)

FileInputStream类的read()方法,返回的是读取的那个字节,用int类型接收。
FileInputStream类的read(byte[])方法,返回的是读取字节数(读取的内容存到byte数组),也用int类型接收。
10.过滤流
对输入输出流进行包装的流
常用过滤流:BufferedInputStream和BufferedOutputStream
当写入数据不满足内部缓冲区(8k 8192字节)时,不会写到文件,需要强制刷新,调用flush或者close,都可以
缓冲区读满了会自动刷新缓冲区

“包装流”关闭会顺便关闭其包装的流,并且关闭时会自动刷新缓冲区(可参见源码)。
11.案例使用字节流复制文件/文件夹
递归、缓冲流

12.字符流
提问:字符流可以用于复制媒体文件(比如图片、音乐、视频)吗?
答:文件无法打开,数据丢失。
Reader和Writer为字符流顶层的抽象类
13.FileReader和FileWriter
//字符数组

14.BufferedReader和BufferedWriter

注意:readLine()读到的内容不包含结束符,因此将读到的内容写入另一个文件时,为保证内容一致性,需要手动调用newLine()写入换行符。
15.ObjectInputStream和ObjectOutputStream(对象输入流和对象输出流)
序列化:将对象转成二进制串
反序列化:将二进制串还原成对应的对象
Java序列化的好处:其好处一是实现了数据的持久化,通过序列化可以把数据永久地保存到硬盘上(通常存放在文件里),二是,利用序列化实现远程通信,即在网络上传送对象的字节序列。
与FileInputStream或FileOutputStream配合使用时,可以对Object对象进行持久化存储,把对象以某种特定的格式写入文件称之为序列化,把写入的编码格式内容还原为对象称之为“反序列化”
要写入的对象需要实现Serializable接口

理解模型:运送大花瓶,打破原有数据结构,按照设计图纸(序列号)还原。设计图纸版本号要和打碎之前的版本号一致。
Eg:

创建一个Student,只要版本号不变,就可以反序列化,如果版本号发生变化,就会报异常

存的是集合

ArrayList、LinkedList、HashMap、TreeMap、HashSet、TreeSet、String、数组全部实现序列化接口
如果需要序列化,那么涉及到的所有的类都要实现序列化接口
16. InputStreamReader和OutputStreamWriter
转换流:字节流与字符流之间的转换
转换流一般都是配合字符流使用的
接受键盘输入存入文件:

如果用到指定编码格式保存或读取文件时,需要用到转换流,因为FileReader和FileWriter是使用默认编码格式保存的,而字节流有指定编码格式的构造方法

在电脑内存里只有字节这一说,其实字符流也是通过字节流来操作的
16.编写转码工具:GBK文件转码为UTF-8文件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
2021-03-26 20:54:33,596 - Model - INFO - Epoch 1 (1/200): 2021-03-26 20:57:40,380 - Model - INFO - Train Instance Accuracy: 0.571037 2021-03-26 20:58:16,623 - Model - INFO - Test Instance Accuracy: 0.718528, Class Accuracy: 0.627357 2021-03-26 20:58:16,623 - Model - INFO - Best Instance Accuracy: 0.718528, Class Accuracy: 0.627357 2021-03-26 20:58:16,623 - Model - INFO - Save model... 2021-03-26 20:58:16,623 - Model - INFO - Saving at log/classification/pointnet2_msg_normals/checkpoints/best_model.pth 2021-03-26 20:58:16,698 - Model - INFO - Epoch 2 (2/200): 2021-03-26 21:01:26,685 - Model - INFO - Train Instance Accuracy: 0.727947 2021-03-26 21:02:03,642 - Model - INFO - Test Instance Accuracy: 0.790858, Class Accuracy: 0.702316 2021-03-26 21:02:03,642 - Model - INFO - Best Instance Accuracy: 0.790858, Class Accuracy: 0.702316 2021-03-26 21:02:03,642 - Model - INFO - Save model... 2021-03-26 21:02:03,643 - Model - INFO - Saving at log/classification/pointnet2_msg_normals/checkpoints/best_model.pth 2021-03-26 21:02:03,746 - Model - INFO - Epoch 3 (3/200): 2021-03-26 21:05:15,349 - Model - INFO - Train Instance Accuracy: 0.781606 2021-03-26 21:05:51,538 - Model - INFO - Test Instance Accuracy: 0.803641, Class Accuracy: 0.738575 2021-03-26 21:05:51,538 - Model - INFO - Best Instance Accuracy: 0.803641, Class Accuracy: 0.738575 2021-03-26 21:05:51,539 - Model - INFO - Save model... 2021-03-26 21:05:51,539 - Model - INFO - Saving at log/classification/pointnet2_msg_normals/checkpoints/best_model.pth 我有类似于这样的一段txt文件,请你帮我写一段代码来可视化这些训练结果
最新发布
02-06
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大猩猩乔治

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值