高级API复习

阅读: 评论:0

高级API复习

高级API复习

            总复习
一.文件的操作包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 BufferdeWriter

2.网络()
(1)获取自己电脑&#LocalHost()
(2)获取局域网中别人的电脑:ByName("ip地址");
(3)获取互联网中的电脑:URL url = new URL(例如百度) InputStream is = url.openStream();


3.将字节流转换为字符流——利用桥梁:InputStreamReader 
注意:将字节流转换为字符流的过程中,可能会发生乱码的情况,需要设置编码方式,支持中文的编码方式只有3种,分别是:gbk utf-8 gb2312

Pattern:正则表达式的编译表示形式
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


桥梁:字节->字符
InputStreamReader

OutputStreamWriter

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小时内删除。

标签:高级   API
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23