高级API—总结
一、File.
1.1概念:
在java程序里面文件和文件夹都用 File表示;
1.2常用方法:
判断 file 是不是文件夹:isDirectory()
判断 file 是不是文件:isFile()
判断File对象是否存在:exists()
创建文件:createNewFile()
创建文件夹:mkdir();
获取文件的完整/全路径:getPath();
获取文件的父路径(不包含文件名):getParent();
获取文件的大小/长度/尺寸:length()
获取文件名字:getName()
获取文件最后修改时间:lastModified()
删除文件:delete();
删除文件夹(必须保证是空文件夹):delete();
获取文件夹里面的文件名字:list();
获取文件夹里面存放的所有文件对象:listFiles();
获取系统盘符:listRoots();
递归:核心在方法颞部自己调用自己。
二、io流:
2.1流的分类:
在java中的流按数据流动方向不同可以分为输入流和输出流两种(IO流);
按处理数据类型的不同可分为字符流和字节流;
按照功能不同可分为节点流和处理流。
2.2字节流:
字节读取流:FileInputStream;
字节输入流:FileOutputStream;
2.3字节流包装类:
字节读取流包装类:BufferedInputStream;
字节写入流包装类:BufferedOutputStream;
2.4字符流:
字符读取流:FileReader;
字符输入流:FileWriter;
2.5字符流包装类:
字符读取流包装类:BufferedReader;
字符写入流包装类:BufferedWriter;
2.3序列化和反序列化:
序列化:Java序列化就是指把Java对象转换为字节序列的过程(把java对象以文件的形式保存到电脑本地或者写入到数据库)。
反序列化: Java反序列化就是指把字节序列恢复为Java对象的过程(把序列化的本地文件恢复为java对象)。
被序列化的类必须实现序列化接口:Serializable
(反序列化)对象读取流:ObjectInputStream:对象输入流是用来恢复之前序列化存储的对象
方法:readObject();
(序列化)对象写入流:ObjectOutputStream:对象输出流用可以将对象数据写入到文件。
方法:writeObject(对象);
三、URL:
统一资源定位符;
获取远程/网络上资源:InputStream is = url.openStream();// 得到网络字节读取流
InputStream:抽象类。
四、多线程:
4.1实现线程的三种方式:
继承 Thread类,并重写run()方法;
实现 Runnable接口,并重写run()方法;
实现 Callable接口,并重写call()方法;
4.2线程的五大状态:
- 新建
- 就绪
- 运行
- 阻塞
- 死亡
4.3设置线程的优先级:
级别:1-10(默认级别是5);
方法:setPriority(6);
4.4常用函数:
sleep():设置线程休眠时间,单位毫秒;
yield():(线程放弃当前的CPU时间片)方法是停止当前线程,让同等优先权的线程运行,如果没有同等优先权的线程,那么Yield()方法将不会起作用。该方法与sleep()类似,只是不能由用户指定暂停多长时间,该方法执行后线程直接进入就绪状态。
join():执行后线程进入阻塞状态,例如在线程B中调用线程A的join(),那线程B会进入到阻塞队列,直到join结束或中断线程B才开始进入阻塞队列。
wait():让线程处于等待状态,并且释放掉抢到的锁旗标,其他线程可以继续抢锁旗标。wait()必须在同步的代码块中执行。
notify():随机唤醒一个处于wait()状态的线程。
notifyAll():唤醒所有处于wait()状态的线程。
interrupt():中断线程的阻塞状态。
suspend():挂起线程,但是容器造成死锁,已废弃该方法。
resume():线程恢复执行。
4.5为了保证线程对资源安全访问(避免资源访问冲突),可以设置线程同步:
设置关键字关键字:synchronized
五、套接字:
服务器套接字:ServerSocket;
ServerSocket ss = new ServerSocket(指定端口号);
Socket socket = ss.accept();// 获取连接该服务器的客户端的套接字
客户端套接字:Socket;
Socket socket = new Socket("ip地址", 端口号);
六、UDP:无连接数据包传输协议。
1.定义发送信息的人。
DatagramSocket ds=new DatagramSocket();
2.打包数据。
DatagramPacket dp=new DatagramPacket(str.getBytes(), str.getBytes().length,InetAddress.getByName("127.0.0.1"), 3838);
3.发送数据。
ds.send(dp);
4.接受数据。
ds.receive(dp);