1、File:文件和目录路径名的抽象表示形式,File类的实例是不可变的
File的构造方法:
(1)File(File parent,String child):根据指定的父路径对象和文件路径创建File对象
(2)File(String pathname):将指定的路径名转换成一个File对象
(3)File(String parent,String child):根据指定的父路径和文件路径创建File对象
File的创建功能:
(1)boolean createNewFile():当指定文件不存在时创建文件并返回true,否则返回false
(2)boolean mkdir():当指定文件夹不存在时创建文件夹并返回true,否则返回false
(3)boolean mkdirs():创建指定文件夹,当文件夹所在的目录不存在,则顺道一块创建了
File的删除功能:
boolean delete():删除指定的文件或者文件夹,当指定的文件或者文件夹存在时删除文件并返回true,否则返回false
File的判断功能:
(1)boolean exists():判断文件或者文件夹是否存在,如果存在就返回true,否则返回false
(2)boolean isAbsolute():判断File对象指向的路径是否是绝对路径,如果是绝对路径则返回true,否则返回false
(3)boolean isDirectory():判断File对象指向的路径是否是文件夹,如果是文件夹则返回true,否则返回false
(4)boolean isFile():判断File对象指向的路径是否是文件,如果是文件则返回true,否则返回false
(5)boolean isHidden():判断File对象指定的路径是否有隐藏属性,如果隐藏了则返回true,否则返回false
File的其他功能:
(1)File getAbsoluteFile():以File对象的形式返回当前File对象所有指向的绝对路径
(2)String getAbsolutePath():返回File对象所指向的绝对路径
(3)String getParent():获取父路径返回字符串
(4)File getParentFile():获取父路径返回File对象
(5)String getName():获取文件或文件夹的名称
(6)String getPath():返回创建File对象时给的路径
(7)long lastModifiled():以毫秒值的形式返回最后修改的时间
(8)long length():返回文件的字节数
(9)boolean renameTo(File dest)://将当前File对象所指向的路径修改为指定File所指向的路径
(10)String[] list():返回当前路径下的所有文件和文件夹名称
(11)File[] listFiles():返回当前路径下的所有文件和文件夹名称已经绝对路径
(12)static File[] listRobots():返回的是所有盘符
注意:
a、只有指向文件夹的File对象才可以调用该方法
b、删除一个文件夹,这个文件夹下面不能有其他的文件和文件夹
c、绝对路径:固定不可改变的路径,以盘符开头
d、相对某个参照物,不能以盘符开头,在Eclipse中相对路径相对应当前项目的根目录
2、IO流分类:
(1)流向:
A、输入流:读取数据 FileReader Reader
B、输出流:写出数据 FileWriter Writer
(2)数据类型:
A、字节流:
a、字节输入流:读取数据 InputStream
b、字节输出流:写出数据 OutputStream
B、字符流:
a、字符输入流:读取数据 Reader
b、字符输出流:写出数据 Writer
注意:
a、字节把数据直接写到文件中,不需要刷新
b、二进制文件只能使用字节流进行复制(使用windows自带记事本打开是读不懂的)
c、文本文件的复制既可以使用字符流,也可以使用字节流
3、标准字节输入输出流:
(1)public static final InputStream in:字节输入流,用来读取键盘录入的数据
(2)public static final PrintStream out:字节输出流,将数据输出到命令行
注意:
标准输出流是一个字节输出流,只能输出字节或者字节数组,,但读取到的数据是字符串,如果想进行输出则需要转换成字节数组,通过标准输出流输出字符串,把标准输出流转换成一种字符输出即可:OutputStreamWriter
转换流:把字节输入流转换成字符输入流:InputStreamReader
4、打印流:
(1)PrintStream:在OutputStream基础之上提供了增强功能,可以方便地输出各种类型的数据而不仅限于byte型,不抛出IOException
(2)PrintWriter:提供了PrintStream的所有打印方法,不抛出IOException
两者区别:作为处理流使用时,PrintStream只能封装OutputStream类型的字节流,而PrintWriter既可以封装OutputStream类型的字节流,也可以封装Writer类型的字符输出流并增强其功能。
a、可以自动换行:println()
b、不能输出字节,但可以输出其他任意类型
c、通过某些配置,可以实现自动刷新(只有在调用println,printf或format才有用)
d、也是包装流,不具备写出功能
e、可以把字节输出流转换成字符输出流
注意:只能输出不能输入
(3)打印流的特有功能:
A、自动换行:使用方法println()
B、自动刷新:创建PrintWriter对象时启动自动刷新开关,并且使用Println等3 个方法
注意:创建FileWriter对象时boolean参数是否自加,创建打印流对象的boolean类型参数是否自动刷新
5、对象操作流:可以用于读写任意类型的对象
(1)ObjectOutputStream
writeObject
ObjectOutputStream(OutputStream out)
(2)ObjectInputStream
readObject
ObjectInputStream(InputStream in)
注意:
a、使用对象输出流写出对象,只能使用对象输入流来读取对象,只能将支持java.io.Serializable接口的对象写入流中
b、Exception in thread "main" java.io.EOFException:当输入过程中意外到达文件或流的末尾时,抛出此异常
c、Serializable:序列号,是一个标识接口,只起标识作用,没有方法,当一个类的对象需要IO流进行读写的时候,这个类必须实现该接口
解决对实现序列化接口出现的黄色警告问题:Exception in thread "main" java.io.InvalidClassException
当Serialization运行时检测到某个类具有以下问题之一时,抛出此异常:
a、该类的序列版本号与从流中读取的类描述符的版本号不匹配
b、该类包含未知数据类型
c、该类没有可访问的无参数构造方法
6、Properties:表示了一个持久的属性集,属性列表中每个键及其对应值都是一个字符串
构造方法:Properties()
7、编码表:把计算机底层的二进制数据转换成我们能看到的字符
(1)ASCII;(2)GB2312---GBK;(3)Unicode(所有的字符都占两个字节);(4)UTF-8:长度可变的码表;(5)ANSI:本地编码表---gbk
注意:字符流=字节流+编码
8、多线程:一个进程可以有一个线程,也可以有多个线程
进程:当前正在运行的程序,一个应用程序在内存中的执行区域
线程:进程中的一个执行控制单元,执行路径
a、单线程:安全性高,效率低
b、多线程:安全性低,效率高(360,迅雷等)
注意:主方法可以创建多个线程
9、网络地址三要素:
(1)IP地址:网络中设备的标识,可用主机名
(2)端口号:
a、物理端口:网卡口
b、逻辑端口:每个网路程序都会至少有一个,用于标识进程的逻辑地址,不同的进程(有效端口号:0-65535,其中0-1024系统使用或保留端口)
(3)传输协议:
a、UDP:将数据源和目的封装成数据包中,不需要建立连接,不可靠,速度快(数据报的大小限制在64k)
b、TCP:建立连接,形成传输数据的通道,进行大数据量传输,通过三次握手完成连接,可靠,效率稍低
UDP协议收发数据的注意事项:
端口号错误,数据可以正常发出,不会出现异常,但是收不到数据
Exception in thread "main" java.net.BindException:Address already in use:Cannot bind该异常表示该端口号已经绑定了
Socket的常用功能:
(1)InetAddresss getAddress():获取发送端的ip对象
(2)byte[] getData():获取接收到的数据,也可以直接使用创建对象时的数据
(3)int getLength():获取具体收到数据的长度
(4)DatagramPacket:此类表示数据打包 数据byte[] 设备的地址 ip 远程的地址 端口号 DatagramPacket(byte[] buf,int length,InetAddress address,int port)