InputStreamReader读数据的2种方式

博客介绍了InputStreamReader读数据的两种方式,一是使用public int read()一次读取一个字符,二是用public int read(char[] cbuf)一次读取一个字符数组。

/*
InputStreamReader读数据的2种方式
public int read():一次读取一个字符
public int read(char[] cbuf):一次读取一个字符数组
*/

public class ReaderDemo {
	public static void main(String[] args) throws IOException {
		// 创建字符输入流
		InputStreamReader isr = new InputStreamReader(new FileInputStream("a.txt"));
		
		// public int read():一次读取一个字符
//		int ch;
//		while((ch = isr.read()) != -1){
//			System.out.print((char)ch);
//		}
		
		// public int read(char[] cbuf):一次读取一个字符数组
		char[] chs = new char[1024];
		int len;// 每次真实读到数据的个数
		while((len = isr.read(chs)) != -1){
			 System.out.print(new String(chs,0,len));
		}
		
		isr.close();
		
	}

}
### Java Socket 服务端读取数据的实现方法 在 Java 中,Socket 编程是一种常见的网络通信方式。通过 Socket,客户端和服务端可以进行数据交换。服务端读取客户端发送的数据通常涉及以下几个关键步骤:创建服务器套接字、监听客户端连接、接收数据流并解析内容[^1]。 以下是一个完整的 Java Socket 服务端读取数据的代码示例: ```java import java.io.*; import java.net.*; public class SocketServer { public static void main(String[] args) { int port = 8080; // 定义服务器端口 try (ServerSocket serverSocket = new ServerSocket(port)) { System.out.println("服务器已启动,等待客户端连接..."); // 等待客户端连接 try (Socket clientSocket = serverSocket.accept()) { System.out.println("客户端已连接"); // 获取输入流以读取客户端发送的数据 try (BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()))) { String inputLine; StringBuilder inputData = new StringBuilder(); // 循环读取客户端发送的数据 while ((inputLine = in.readLine()) != null) { inputData.append(inputLine).append("\n"); if (inputLine.isEmpty()) { // 如果遇到空行,表示数据结束 break; } } System.out.println("从客户端接收到的数据:\n" + inputData.toString()); } } } catch (IOException e) { e.printStackTrace(); } } } ``` #### 代码说明 1. **ServerSocket 创建**:`ServerSocket serverSocket = new ServerSocket(port)` 创建一个监听指定端口的服务器套接字[^2]。 2. **客户端连接接受**:`serverSocket.accept()` 方法阻塞等待客户端连接,成功后返回一个与客户端关联的 `Socket` 对象。 3. **输入流读取**:通过 `clientSocket.getInputStream()` 获取输入流,并使用 `BufferedReader` 包装以便逐行读取数据[^3]。 4. **数据解析**:通过循环调用 `readLine()` 方法读取每一行数据,直到遇到空行或流结束。 #### 注意事项 - 在实际应用中,可能需要对异常进行更详细的处理,例如连接中断或超时等。 - 如果需要同时处理多个客户端请求,可以结合线程池或多线程技术来提高并发能力[^4]。 - 数据传输格式应提前约定好,例如 JSON、XML 或纯文本等,以便服务端正确解析。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值