关闭

java基础视频25days(毕老师)学习日志(day20、day21)

170人阅读 评论(0) 收藏 举报

day20:

 ★01  File 概述:
用来将文件夹和文件封装成对象。
File对象出现弥补了流的不足,流:
不能操作文件夹,不能操作文件的属性信息,
c:\\abc\\zzz\a.txt
反斜杠或斜杠都可以,但是在linux下,这个符号是不同的,这样写就不利于跨平台。介绍:与系统有关的默认名称分隔符:separator。
\\ 被替换为:File.separator  为文件中对象的一个属性。跨平台的目录分隔符。

★02 File对象功能 创建和删除
  在硬盘上成功创建文件,就要调用系统的底层资源,所以就有可能发生异常。
创建文件:createNewFile() 调用此方法时注意要抛出异常!
★03 File对象功能 判断
只拿非隐藏的文件,隐藏的文件不要。
★04 File对象功能 获取
覆盖的原理是先删再创建。
renameTo()同一个目录下的功能时更改文件名;不同目录下则是剪切粘贴的功能。
★05 File 对象功能  文件列表
★06 File 对象功能  文件列表2
list(FilenameFilter filter)
接口:接口是一个特殊的类,具体同类的区别呢?
原来,这个对象的list方法,它在依据这个对象的accept方法的返回值来判定这个文件是不是需要的文件。
list() 获取的是当前文件夹下的文件及文件夹名称;
lisFiles()获取的是当前文件夹下的文件及文件夹对象。

能不能拿目录中的目录中的目录中的文件呢?换句话说就是能不能拿当前目录下,且包括子目录下的文件呢?

★07  列出目录下所有内容--递归。
lqle思考:可否使用递归来实现微积分中的极限概念?
内存溢出:因为方法调用次数太多,导致占满内存时,程序还没结束。
★08列出目录下所有内容--递归带层次
详见代码levelDemo.java
注意|--符号的添加方法,
★09 疑问:
第二次删除testdir的时候,为什么会出现false的情况?
自己试验时则没有出现此类问题!
★10 IO流 创建java文件列表
涉及到集合,导入util包。
该程序需要自己写一遍;
[03/20/12 09:41]
★11 IO流 properties对象;
存在于util包中。
不仅可以操作键值对,而且可以操作硬盘上的键值对信息。
配置文件ini中存储的就是软件的基本设置信息。可以用IO流的技术对这些信息进行编辑或获取。
集合中的数据存在内存中,而porperties可以操作硬盘中的数据。
★12 IO流 properties存取
Properties对象prop可以直接输打印在控制台上。
遍历所有键值对应的内容并打印:
1.5 之前用propertyNames()
1.6 开始使用stringPropertyNames()
★13 IO流 properties存取配置文件。
  加载字符流的方法load是1.6版本之后才有的。
Info.txt 中的信息带#号的是不加载的,
Properties加载的信息,必须是键值对。
★14 Properties练习题
目前能使用的键值对文件有两种:
xml
properties
视频时间:12:15:
count = Integer.parseInt(value)
value 不等于null,则记住,该方法是?

xml中封装的对象容易看,记录键值对信息相对较容易。
java本身就有取xml中数据的对象:
org.w3c.dom
document操作数据还是比较复杂,所以有牛人们做了
dom4j  :dom for java
这个工具到开发xml时候就要使用了
★15 Print Writer
字节输出流:OutputStream out
字节输出流:Writer
autoFlush   自动刷新输出缓冲流。
PrintWriter是很有用的类,注意视频结尾处的几个改动,需要自己练习变换。

为什么要选用vector集合?
为了图省事,就抛了IOException 异常,疑问不省事,全部写完的写法是怎样的呢?
使用FileWriter的写法再写一遍。
@lqle:
len=0 定义的byte[]是怎么回事?需要看以前的视频。
★16 IO流 切割文件。

 

day21:

 ★01 对象的系列化
NotSerializableException
没有方法的接口,通常称之为标记接口
Serializable
将Person的源代码中加入自定义的UID标识,则成员属性改变,生成的class文件的UID编码也是一样的,可以顺利读取原来存在硬盘中持久信息。
静态是不能被系列化的。

强制加UID后,Person加private 不变:
新的类还可以操作曾经被虚拟化的对象。
静态是不能被序列化的。因为在方法区当中。不在堆中。
对非静态的成员也不想让它被序列化的话,前面可以加:
transient
最后一句,write多个对象,可以一个一个地read出来,试验后,貌似不行。
 ★02 IO流 管道流
之前的读的流,要将数据独到一个数组中,写的时候,写的流再到数组中去取,所以需要一个中转站。
现在的管道流是不用的,读和写可以接上,不需要中转。
read方法是阻塞式方法,读的时候没有数据,则等待!
 只要没有读到数据,当按键盘录入数据的时候,这个动作吧线程唤醒了,所以可以看做是多线程,
 涉及到了多线程的IO技术的对象。

要么构造函数,要么使用connect方法。
多线程的例子没有完全看明白。
 ★03 IO流 RandomAccessFile
随机读写访问,多线程下载就是基于此原理,需要重点掌握。
1,模式
2,
3,通过seek方法随意更改指针的位置来控制数据的读取和写入。

数据要分段,所以要求数据有规律。
中国人姓名按照16个字节存,8个字。
 ★04  IO流 操作基本数据类型的流对象DataStream

 ★05 所涉及的内存为源,基本数据的操作
基本数据类型
字节数组
字符数组
字符串数组
 
★06 转换流的字符编码。
本视频稍作复习即可。
java中加入了编码表的流对象:
InputStreamReader
OutputStreamWriter
PrintStream
PrintWriter.

ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)

★07 显示数组中的元素:
Arrays.toString(b1)
GBK 的代码让ISO8859-1解码,再将乱码文件编码返回,可以顺利放回GBK并正确显示,
如果换做UTF-8,则不行!因为它们都识别中文,编码解码过程中因为获取位数的关系,将产生混乱。
★08字符编码:联通
GBK和UTF-8 的特点,重复之处。

★09
ClassCastException 是RunTime的子类。

疑问:student类中hashCode作何用?19:43 视频时间
String info  转为整数:Integer.parseInt(info[1]),
Integer 类中的方法:parseInt 将字符串参数作为有符号的十进制整数进行解析。该类提供了多个方法,能在int类型和String类型之间相互转换。

强行逆转比较器!
类 Collections
reverseOrder()
          返回一个比较器,它强行逆转实现了 Comparable 接口的对象 collection 的自然顺序。

 

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:6113次
    • 积分:218
    • 等级:
    • 排名:千里之外
    • 原创:19篇
    • 转载:0篇
    • 译文:0篇
    • 评论:1条
    文章分类
    文章存档
    最新评论