黑马程序员技术交流社区

标题: 【石家庄校区】学习笔记_文件流_多线程_Socket [打印本页]

作者: CHNing    时间: 2018-4-23 16:33
标题: 【石家庄校区】学习笔记_文件流_多线程_Socket
本帖最后由 小石姐姐 于 2018-4-26 17:35 编辑

学习笔记_文件流_多线程_Socket
File类
描述文件或者文件夹的类
构造方法:
File(String filePath)                通过制定路径创建File对象
File(File parent,String child)        首先获取parent(File对象路径),然后File对象路径下添加child路径
File(String parent,String child)        把parent和child拼接后创建File对象
字段:
String File.separator                        返回当前系统文件夹和文件夹之间的分隔符
Char File.separatorChar                        返回系统路径文件夹分隔符char类型
String File.pathSeparator                返回系统默认名称分隔符
Char File.pathSeparatorChar        
方法:
boolean renameTo(File dest)                把当前传入路径的文件名称改成指定File对象传入的名称
boolean isAbsolute()                         判断绝对路径,只是字符串判断,不会检查盘符
boolean isDirectory()                        判断是不是目录
boolean isFile()                                判断是不是一个文件
boolean isHidden()                                 判断是不是一个隐藏文件
boolean exists()                                判断文件或目录存在返回true,否则false
String getParent()                                文件所在路径目录
File[] listFiles()                                        获取制定目录下的所有文件,每个文件是一个File[]元素
boolean delete()                                删除文件或目录,如果删除目录保证目录下没有文件夹或文件
String getParent()                                获取父路径字符串,必须和构造        File([String parent],String child)
File getParentFile()                                获取父路径File对象
String getName()                                获取文件或文件夹的名称
String getPath()                                获取文件全路径
long lastModified()                                返回文件或文件夹最后一次修改时间,返回毫秒
文件流
标准输入输出流
输入流:
InputStream System.in
输出流:
OutputStream System.out
字符转换流
OutputStreamWriter/InputStreamReader
OutputStreamWriter:
把传入的字符转换成流,写到文件中
InputStreamReader
接受字节,把字节转成字符
PrintStream打印流:
自带刷新和自动换行功能,但是必须保证已经打开这个功能并且调用println、print方法才可以
PrintStream(OutoutStream out,boolean)                输出流对象,是否启动自动换行和刷新
异常方法中有一个printStackTrace(PrintStream ps),可以利用PrintStream打印异常错误信息到日志文件中。
ObjectInputStream/ObjectOutputStream对象流
可以利用这流把对象的信息打印到文件中(序列化),保存下来。方便下一次读取
方法:
writerObject(Object obj);
readObject(Object obj)
序列化对象时必须保证对象实现了Serializable,并且尽量给对象类型添加编号
Serializable只起标识作用
Properties类
配置类,把配置信息保存到文件中
默认编码:ISO-8859-1                        不能存中文,外国的编码
方法:
put(Object o1,Object o2)                        添加
setProperty(Object o1,Object o2)        添加
内部调用put
两种写出到配置文件方式
void list(PrintStrem out)                        
void list(PrintWriter )                        
void load(Reader reader);
void sort(Writer writer,String comments)
注意:        list位置必须在添加(setProperty())之前,因为程序走到list(xx)会直接写入
编码表
ASCII                最早的码表
GB2312                支持中文码表        GBK        GB2312升级版
Unicode                所有字符都占2个字符        UTF-8        Unicode升级版
ANSI                不是码表,是表示本地码表。(系统默认码表)
多线程
线程(Thread)
创建线程的两个办法
1.        继承Thread类
重写run方法
2.        实现Rannable接口
实现run方法
笔记:
尽量使用第二种方式,因为使用第二种方式还可以继承/实现其他类或接口
构造方法:
Thread(Runnable target)                        根据传入的实现Runnabl自定义类创建对象
Thread(Runnable target,String name)                        传入Runnable自定义对象类后,设置线程名称为name
Thread(String name)                        创建线程时设置线程名称为name
方法:
join()                                                等待当前线程完成后向下执行
线程池
线程池顶层接口:Executor
线程池接口:ExecutorService
配置一个线程池比较复杂,所以就有了Executors类
Executors线程池的具体实现类
静态方法:
ExecuteService newSingleThreadExecutor()                创建一个线程
ExecuteService newFixedThreadPool(int  nThreads)        创建一个固定大小线程池
ExecuteService newCachedThreadPool()                        创建一个可缓存线程,如果线程池大小超过处理任务所需要的线程池大小,会回收60秒内在线程池中没有执行的线程,当任务增加时,线程池也会加大。
E cuteService newScheduledThreadPool()                创建一个无限大的线程池,支持定时和周期性执行任务需求
Socket
TCP                        传输控制协议
效率低,可靠
给发送端发送数据时,如果接受端接收到的信息不完整(发送端发送给目标后),发送端会自动重发数据
UDP                        用户数据协议
把数据打包,效率高 ,不可靠
大小限制:最大包大小是64K
IPV4:.号隔开,全是数字
IPV6:用:隔开,16进制,大写字母+数字
端口号:
端口号范围:0~65535
端口号是进程地址
InetAddress
方法:
InetAddress[]  getAllbyName(String host)                                根据主机名,返回InetAddress数组(主机名有可能重名,所以是数组)
InetAddress getByName(String host)                                                        根据主机明或用户名获取IP
String getByAddress(String host)                                                根据主机名获取IP
InetAddress getLocalHost()                                                        获取当前主机InetAddress对象
String getHostName()                                                获取当前对象主机名
String getHostAddress()                                        返回IP地址字符串
DatagramSocket
用来发送和接受数据
基于UDP协议
构造:
DatagramSocket(int port)                                                        设置端口
DatagramSocket(int port,InetAddress laddr)                        设置端口,设置地址
方法:
send(DatagramPacket p)                                        发送数据包
receive(DatagramPacket p)                                接受数据包
DatagramPacket                UDP数据包模型
构造:
DatagramPakcet(byte[] bytes,int length)                        数据字节数组,接受长度length包
DatagramPacket(byte[] bytes,int length,InetAddress address,int port)                数字字节数组,字节长度,地址对象,端口号
方法:
byte[] getDate()                                                        获取数据字节
int getLength()                                                        数据包长度
int getPort()                                                                        获取发送方端口号
异常:
java.net.BindException                                         端口号被绑定异常
Socket
基于TCP协议的Socket
构造方法:
Socket(InetAddress add,int port)                        根据IP地址和端口
Socket(Stirng address,int port)                                根据字符类型IP和端口创建
ServerSocket
TCP服务端
ServerSocket可以不管
构造方法:
ServerSocket(int port)                                                        服务端端口号
方法:
Socket accept()                                                                接收端,会堵塞
InputStream getInputStream()                                        返回标准输入流






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2