总复习
一.文件的操作包io
1.File类:input(输入) output(输出)
(1)isFile:判断是否是文件
(2)isDirectory:判断是否是目录(文件夹)
(3)isHidden判断是否是隐藏文件
(4)exists 判断所关联的文件是否存在
(5)createNewFile 创建一个文件
(6)mkdir 创建一个文件夹
(7)getPath 获得文件的路径
getName 获得文件名
getParent 获得文件的上一次父目录的名字(父路径)
(8)length 获得文件长度,以字节为单位
(9)lastModified 获得文件的最后修改时间 返回类型为long
(10)delete 删除指定路径的文件
(11)list 获得文件夹下面所有文件的名字
listFile 获得文件夹下面的所有文件对象
(12)listRoots 获得当前系统的盘符
2.读(Input)
(1)FileInputStream:文件的读取 .read
(2)byte[] bs = new byte[(int)file.length()]; 让字节数组的长度与文件长度一致
(3)String str = new String(bs) 将字节数组转换为字符串
(4).close; 关闭流
3.写(Output)
(1)FileOutputStream:文件的写 .write
(2)byte[] bs = Bytes(); 将String转换为字节数组
(3)解决覆盖问题(先把内容读取出来 再连同用户输入的内容一起写进去)
注意:必须先关缓冲流,再关其它流
4.缓冲流(BufferedInputStream && BufferedOutputStream)
(1)BufferedInputStream的基本用法和FileInputStream是差不多的
但是缓冲流会减少磁盘IO的开销,它的性能高于FileInputStream和FileOutputStream
(2)序列化:将一个对象从内存当中转换到介质(存在硬盘上的介质)的过程
每一个要实现序列化的对象都必须实现一个Serializable接口
(3)反序列化:将对象从硬盘中还原到内存中 读取对象的内容二.字符流
1.
Reader类:FileReader and BufferedReader
Writer类:FileWriter and BufferdeWriter2.网络()
(1)获取自己电脑LocalHost()
(2)获取局域网中别人的电脑:ByName("ip地址");
(3)获取互联网中的电脑:URL url = new URL(例如百度) InputStream is = url.openStream();
3.将字节流转换为字符流——利用桥梁:InputStreamReader
注意:将字节流转换为字符流的过程中,可能会发生乱码的情况,需要设置编码方式,支持中文的编码方式只有3种,分别是:gbk utf-8 gb2312Pattern:正则表达式的编译表示形式
Matcher:执行匹配操作的引擎inputStreamReader:将字节的读取流-->字符的读取流
outputStreamWriter:将字节的写入流-->字符的写入流
4.
客户端与服务器聊天总思路:
* 1.启动服务器
* 1.1等待客户端上线
* 2.客户端连接服务器
* 3.客户端给服务器发送信息
* 4.服务器接收客户端的信息
* 5.服务器回复客户端信息
* 6.客户端接收服务器信息
* 7.关闭所有连接
文件的下载总思路:
* 1.启动服务器并且等待客户端上线
* 2.客户端连接服务器
* 3.客户端告知服务器要下载的文件名
* 4.服务器接收文件名并在本地找到对应文件
* 5.服务器将该文件从硬盘读到内存中,再写入网络中
* 6.客户端从网络上下载该文件,并保存到本地
* 7.关闭连接5.多线程的运用(飞天猪、老虎机小游戏)
currentThread:当前线程
setPriority(Thread.MAX_PRIORITY);最高优先
setPriority(Thread.MIN_PRIORITY);最低优先.yield();//放弃当前CPU资源 重新开始下一次抢夺
.join();//优先该线程 让其他线程处于等待状态
.interrupt();//中断sleep线程
.suspend();//将线程挂起
.resume();//将线程恢复执行
.wait();//等待:把资源让出来
.notify();//唤醒
.notifyAll();//唤醒所有
synchronized:同步start():具备抢CPU的资格
run():抢到了就执行run//面试题:100以内的加减 工厂的生产和销售
//多人聊天室:
1、启动服务(专门开辟一个多线程用来连接)
1.1.获得当前客户端的信息
1.2.把该信息群发给我的所有客户端
2、客户之间进行 读 写
6、udp:有三种:
1、单播:是指只向一个固定的机器发送包
2、广播:是向255.255.255.255发送,所有监听某端口的机器都可以接收到
3、组播:是向一个用户组发送,该组里面所有用户可以接收到(如224.0.0.0)四个祖宗:
抽象类凡是以Stream结尾的都是字节流
凡是以Reader/Writer结尾的都是字符流输入 输出
字节流 InputStream OutputStream
字符流 Reader Writer
桥梁:字节->字符
InputStreamReaderOutputStreamWriter
int i = 1;
run方法是核心方法 灵魂
package st;import java.io.Serializable;public class Demo_01 {public static void main(String[] args) {/*** 高级API复习大纲* 1.IO流(io)* day_01 File类* 1.1 File概述,方法(构造方法以及常用方法)* 1.2 常用的方法* 判断功能:isFile,isDeritory,exists,isHidden* 新建功能:createNewFile,mkdir,mkdirs* 删除功能:delete* 获取功能:getPath,getName,length* list,listFiles* 1.3 算法(递归算法)* 1.4 查找某目录下的所有文件信息* * day_02 IO流之字节流* 1.1 字节流* 输入流--InputStream--FileInputStream--BufferedInputStream* 输出流--OutputStream--FileOutputStream--BufferedOutputStream* 1.2 方法* read()|write()|flush()* * day_03* 1.1 序列化与反序列化----流* 序列化:将内存上产生的对象通过序列化的方法进行保存到本地文件中‘* 反序列化:将文本中的对象读取到内存上* 实现这个过程:被被序列化的对象必须实现Serializable接口,否则报错* 序列化:输出流---ObjectOutputStream* 反序列化:输入流--ObjectInputStream* * 1.2 常用方法* readObject|writeObject* * day_04* 1.1 字符流* 输入(读取)--Reader--FileReader--BufferedReader* 输出(写入)--Writer--FileWriter--BufferedWriter* 常用方法:read|write|newLine|readLine|flush* * 1.2 桥梁--中间转换流* 输入--InputStreamReader* 输出--OutputStreamWriter* 以上2个流可能会考虑编码的问题* 支持中文编码:GB2312,UTF-8,GBK* 纯英文:ISO-8859-1* * * 2.NET网络编程(net)* 1.网络编程:就是利用NET包中的某些类来实现多台设备之间的数据传输* 2.实现网络编程的三要素:* IP地址|端口号|网络通讯传输协议 (ISO网络模型 TCP|IP协议)* * 3.TCP|IP协议* TCP协议:打电话* UDP协议:发邮件* * 4.URL编程* 可以通过URL对象定位到网络上的资源,然后通过特定的方式进行下载。* URL----统一资源定位符* (1)通过URL定位资源* (2)通过url对象调用openStream方法来实现打开或者激活网络流* (3)边读边写的操作* * day_05* 1.Pattern,Matchers find group* * 2.利用Socket套接字完成简单对话* ServerSocket* Socket* * day_06 * 文件下载* swing窗体版本的聊天* * 3.多线程(lang)* 1.2种实现方式:Thread Runnable* * 2.什么情况下使用Thread 什么情况下使用Runnable* 多条线程实现同一件事情 使用 Runnable* 多条线程实现不同的事情 使用Thread* * 3.线程的生命周期* 5个阶段(新建,就绪,运行,阻塞,死亡)* * 4.常用的方法* sleep,join,yield,wait,notify notifyAll* * * UDP---* DatagramSocket* DatagramPacket* * * Map* * * * entrySet*/}
}
package st;import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.URL;
import Matcher;
import Pattern;public class Demo_06 {public static void main(String[] args) throws Exception {
// file:///D:/xb/default.html//1.将网页的源代码读取到内存上进行打印URL url = new URL("file:///D:/xb/default.html");InputStream is = url.openStream();InputStreamReader isr = new InputStreamReader(is);BufferedReader br = new BufferedReader(isr);StringBuffer sb = new StringBuffer();String str = "";while(null!=(str = br.readLine())) {
// System.out.println(str);sb.append(str+"n");}
// System.out.println(sb);
// <img src="images/logo.gif" />
// <img src="images/a1.gif" width="200" height="217" />String regex = "<img\ssrc="([^\">]+)"(\swidth="\w+")?(\sheight="\w+")?\s/>";Pattern compile = Patternpile(regex);Matcher matcher = compile.matcher(sb);while(matcher.find()) {
// System.out.up(1));//images/logo.gif//file:///D:/xb/images/banner.jpgdownloadImg("file:///D:/xb/"up(1));}}public static void downloadImg(String path) throws Exception {System.out.println(path);URL url = new URL(path);//将图片的网络路径中的名称截取下来int lastIndexOf = path.lastIndexOf("/");String fileName = "";if(-1!=lastIndexOf) {fileName = path.substring(lastIndexOf+1);}InputStream is = url.openStream();BufferedInputStream bis = new BufferedInputStream(is);File file = new File("D:\"+fileName);FileOutputStream fos = new FileOutputStream(file);BufferedOutputStream bos = new BufferedOutputStream(fos);byte[] buf = new byte[1024];int len = 0;while(-1!=(len = ad(buf))) {bos.write(buf,0,len);bos.flush();}}}
本文发布于:2024-01-28 15:54:55,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/17064284988550.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |