File I/O
/**
* try-with-resource since JDK7
* 此处try()中的类只要实现AutoCloseable接口,就可以保证程序执行后会自动释放资源,不需要在finally中释放.
*/
public static void main(String[] args) {
try (
InputStreamReader inputStreamReader = new FileReader("C:\\Users\\Q\\Desktop\\log.log");
BufferedReader bufferedReader = new BufferedReader(inputStreamReader)
) {
String line;
while ((line = bufferedReader.readLine()) != null) {
System.out.println(line);
}
} catch (Exception e) {
e.printStackTrace();
}
}
TCP-Socket
服务端
public class JavaTcpServerBIODemo {
private static AtomicInteger atomicInteger = new AtomicInteger();
public static void main(String[] args) throws Exception {
ServerSocket serverSocket = new ServerSocket();
serverSocket.bind(new InetSocketAddress(2345));
// 此处使用多线程处理多个链接,每个新链接分配一个新的线程处理
while (true) {
System.out.println("connet watting......");
Socket socket = serverSocket.accept();
atomicInteger.incrementAndGet();
System.out.println("新客户端连接...");
((Runnable) () -> {
InputStream inputStream = null;
OutputStream outputStream = null;
BufferedReader bufferedReader = null;
try {
// 输入
inputStream = socket.getInputStream();
outputStream = socket.getOutputStream();
bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
String msg;
while ((msg = bufferedReader.readLine()) != null) {
System.out.println(msg);
}
socket.shutdownInput();
// 输出
outputStream.write(("welcome..." + atomicInteger.get()).getBytes(StandardCharsets.UTF_8));
} catch (Exception e) {
e.printStackTrace();
} finally {
if (bufferedReader != null) {
try {
bufferedReader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (outputStream != null) {
try {
outputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (inputStream != null) {
try {
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}).run();
}
}
}
客户端
public class JavaTcpClientBIODemo {
public static void main(String[] args) {
try (
Socket socket = new Socket("127.0.0.1", 2345);
InputStream inputStream = socket.getInputStream();
OutputStream outputStream = socket.getOutputStream();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream))
) {
// 输出
outputStream.write("你好,我是客户端".getBytes(StandardCharsets.UTF_8));
socket.shutdownOutput();
// 输入
String msg;
while ((msg = bufferedReader.readLine()) != null) {
System.out.println(msg);
}
} catch (Exception e) {
e.printStackTrace();
}
}
UDP-Socket
服务端
public class UDPServerDemo {
public static void main(String[] args) throws Exception {
// 发送数据
DatagramSocket datagramSocket = new DatagramSocket(9999);
String msg = "hello";
DatagramPacket datagramPacket = new DatagramPacket(
msg.getBytes(),
msg.length(),
InetAddress.getLocalHost(),
8888);
datagramSocket.send(datagramPacket);
}
}
客户端
public class UDPClientDemo {
public static void main(String[] args) throws Exception {
// 接收数据
DatagramSocket datagramSocket = new DatagramSocket(8888);
byte[] bytes = new byte[1024];
DatagramPacket datagramPacket = new DatagramPacket(bytes, bytes.length);
// block
datagramSocket.receive(datagramPacket);
// msg
System.out.println(new String(datagramPacket.getData(), 0, datagramPacket.getData().length));
}
}