一、缓冲流(都是将数据先换冲到内存缓冲区,然后写入磁盘,或者读取到内存)
1、字节缓冲输入流
构造方法:
BufferedInputStream(InputStream in) 通过字节输入流创建 字节输入缓冲流 对象,默认是8KB
2、字节缓冲输出流
①构造方法:
BufferedInputStream(InputStream in) 通过字节输入流创建 字节输入缓冲流对 象 ,默认是8KB
②只有字节缓冲输出流或者字符缓冲输出流才有flush方法,他们都是先将数据输出到缓冲区,然后flush或者close方法,将数据同步导磁盘
3、字符缓冲输入流
①构造方法:
BufferedReader(Reader in)
②BufferedReader缓冲流类还提供了一个一次读取一行的方法:
String readLine() (只有这个类提供了这个方法)一次读取一行字符,
如果读取不到字符,则会返回null(这是和read方法的区别),它是以\r \n
\r\n来判断是不是一行的,当没有出现这些标志时,他会一直等着,不会结束
4、字符缓冲输出流
①构造方法:
BufferedWriter(Writer out)
②BufferedWriter特有的方法:
void newLine() 写入一个换行符。
二、异常处理方式二
在java7之后,IO流出现了一种自动关闭流的异常处理。
在java7之后所有的IO流都实现了一个接口,该接口叫做 AutoCloseable,
并且这个异常处理会自动关闭流
try(
创建IO流对象,该对象必须实现了AutoCloseable接口
){
可能出现异常的代码
}catch(异常类型 变量名){
异常处理
}catch(异常类型 变量名){
异常处理
}catch(异常类型 变量名){
异常处理
}
三.打印流
PrintStream(OutputStream out) 把数据打印到指定的输出流中
四.标准输入流、标准输出流、标准错误流
System类(属于系统类)内部包含in、out和err三个成员变量,分别代表标准输入流(键盘输入),标准输出流(显示器)和标准错误输出流(显示器)。
static PrintStream out “标准”输出流。
static PrintStream err “标准”错误输出流。 只是将输出的内容标红而已
static InputStream in “标准”输入流。
五、正则表达式(regex)
①正则表达式: 简单理解就是一个字符串,只是该字符串它是另外的字符串的匹配规则。
②作用: 验证其他字符串是否按照正则表达式的规则编写 满足:true, 不满足:返回false
③常见的正则表达式的规则写法:
ABC----》验证你的字符串是否就是一个ABC
[0-9]--->验证你的字符串是否是0-9中任意一位数字 注意:它只能匹配字符串一位
[A-Z]--->验证你的字符串是否是A-Z中任意一位字符 注意:它只能匹配字符串一位
[a-z]--->验证你的字符串是否是a-z中任意一位字符 注意:它只能匹配字符串一位
[a-zA-Z]--->验证你的字符串是否是任意一位英文字母 注意:它只能匹配字符串一位
[a-zA-Z0-9]--->验证你的字符串是否是任意一位英文字母或者数字 注意:它只能匹配字符串一位
[ABC]---->验证你的字符串是否是A或者B或者C中的任意一位 注意:它只能匹配字符串一位
\d 表示一个整数
④Greedy 数量词
X? X,一次或一次也没有
X* X,零次或多次
X+ X,一次或多次
X{n} X,恰好 n 次
X{n,} X,至少 n 次
X{n,m} X,至少 n 次,但是不超过 m 次
⑤预定义字符类
. 任何字符(与行结束符可能匹配也可能不匹配)
\d 数字:[0-9]
\D 非数字: [^0-9]
\s 空白字符:[ \t\n\x0B\f\r]
\S 非空白字符:[^\s]
\w 单词字符:[a-zA-Z_0-9] 判断你的字符串是否是任意字母,任意数字或者_ 满足:true 不满足 false
\W 非单词字符:[^\w]
⑥边界匹配器
^ 行的开头
$ 行的结尾
⑦Logical 运算符
XY X后紧跟 Y
X|Y X 或 Y
六、ip操作
InetAddress(工具类,方法基本都是static修饰)此类表示互联网协议 (IP) 地址。
IP 地址是 IP 使用的 32 位(四段)或 128位(八段)无符号数字,它是一种低级协议,UDP 和 TCP 协议都是在它的基础上构建的。
static InetAddress getLocalHost() 返回本地主机。
static InetAddress getByName(String host) 在给定主机名的情况下确定主机的 IP 地址。
static InetAddress[] getAllByName(String host) 在给定主机名的情况下,根据系统上配置的名称服务返回其 IP 地址所组成的数组。
static InetAddress getByAddress(byte[] addr) 在给定原始 IP 地址的情况下,返回 InetAddress 对象。
static InetAddress getByAddress(String host, byte[] addr) 根据提供的主机名和 IP 地址创建 InetAddress。
boolean isReachable(int timeout) 测试是否可以达到该地址
七、URL
平时我们在网上看到的网址,只看到域名并没有看到端口号
答:http协议浏览器默认的端口号是80 https浏览器默认端口号是443 默认端口号是被省了的
URL = 协议 + ip地址(域名) +端口号 + 资源路径 为什么要使用域名而不使用IP地址?为了方便记忆
protocol:协议
host: ip地址
port:端口号
File:资源文件
构造方法:
URL(String protocol, String host, int port, String file)
常用方法:
InputStream openStream() 打开到此 URL 的连接并返回一个用于从该连接读入的 InputStream对象。
八、URL的编码和解码
URLencoder是对URL以指定的字符集进行编码;
URLdecoder是对URL以指定的字符集进行解码。
static String encode(String s, String enc) 以指定的字符集进行编码
static String decode(String s, String enc) 以指定的字符集进行解码
一般都是用在,对网址进行编码或者对你查询的参数进行编码,其实一般都是对中文进行编码
九、网络编程
package cn.itsource_o9tcp2;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintStream;
import java.net.Socket;
import java.net.UnknownHostException;
public class Client {
public static void main(String[] args)
throws UnknownHostException, IOException {
Socket socket =
new Socket("192.168.43.59",9999
);
//客户端监听服务端发过来的信息
InputStream inputStream =
socket.getInputStream();
new ClientThread(inputStream).start();
//创建打印流(打印流是将数据打印到指定的流中)
PrintStream printStream =
new PrintStream(socket.getOutputStream());
InputStream in =
System.in;
BufferedReader bufferedReader =
new BufferedReader(
new InputStreamReader(in));
String line;
while((line = bufferedReader.readLine()) !=
null){
printStream.println(line);
}
}
}
View Code
package cn.itsource_o9tcp2;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
public class ClientThread
extends Thread{
private InputStream inputStream;
public ClientThread(InputStream inputStream) {
super();
this.inputStream =
inputStream;
}
@Override
public void run() {
BufferedReader bufferedReader =
new BufferedReader(
new InputStreamReader(inputStream));
while(
true){
String line;
try {
while((line = bufferedReader.readLine()) !=
null){
System.out.println("客户端接收到的数据:="+
line);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
View Code
package cn.itsource_o9tcp2;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
public static void main(String[] args)
throws IOException {
//创建一个服务器
ServerSocket server =
new ServerSocket(9999
);
//创建一个终端监听服务器(如果没接收到数据,这儿会发生阻塞)
Socket socket =
server.accept();
//创建一个终端的字节输入流对象
InputStream inputStream =
socket.getInputStream();
//创建一个server线程来一直监听终端是否收到信息,一旦收到信息,便执行线程中的内容
new ServerThread(inputStream).start();
//通过终端的字节输出流对象创建一个打印流
PrintStream printStream =
new PrintStream(socket.getOutputStream());
//创建一个标准输入流对象
InputStream in =
System.in;
//用标准输入流对象创建一个字符输入流对象,//通过字符缓冲输入流进行读取控制台里面输入的内容
BufferedReader bufferedReader =
new BufferedReader(
new InputStreamReader(in));
String line;
while((line = bufferedReader.readLine())!=
null){
//读多少,打印流就输出多少
printStream.println(line);
}
}
}
View Code
package cn.itsource_o9tcp2;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
public class ServerThread
extends Thread{
//定义一个成员变量来保存InputStream的信息
private InputStream inputStream;
//通过构造方法为成员变量赋值
public ServerThread(InputStream inputStream) {
this.inputStream =
inputStream;
}
@Override
public void run() {
//用接收到的字节输入流对象经过转换流来创建一个字符缓冲流对象
BufferedReader bufferedReader =
new BufferedReader(
new InputStreamReader(inputStream));
try {
//因为这个线程要一直监听服务器,因此只能是死循环
while(
true){
String line;
while((line = bufferedReader.readLine()) !=
null){
System.out.println("服务端线程收到的数据:=:"+
line);
}
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
View Code
转载于:https://www.cnblogs.com/limengkun/p/10739310.html
相关资源:JAVA上百实例源码以及开源项目