|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
代码
public class Serverx{
public static void main(String args[]) throws IOException{
//创建对象并绑定端口
ServerSocket ss = new ServerSocket(10000);
//等待客户端连接
Socket socket = ss.accept();
//读取数据并保存到本地文件
BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
BufferedWriter bh = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("d://新建文件夹//xiao.txt"), "UTF-8"));
String s = br.readLine();
bh.write(s);
bh.newLine();
bh.flush();
socket.close();
ss.close();
}
}
出错
Exception in thread "main" java.lang.NullPointerException
at java.io.Writer.write(Writer.java:157)
at Serverx.main(Serverx.java:23)
出错的原因是啥
根据您提供的代码和异常信息,这个错误是因为java.lang.NullPointerException在Writer.write方法中发生。
这个问题很可能是由于从BufferedReader对象br中读取的String值s为null导致的。
在您的代码中,您使用了br.readLine()方法来读取客户端发送的数据。readLine()方法会返回一个包含一行数据的字符串,如果已到达输入流的末尾,则返回null。
因此,当客户端没有发送数据或者已经断开连接时,s变量可能为null。接下来,您尝试使用bh.write(s)方法将null值写入文件,这就导致了NullPointerException。
要解决这个问题,您可以在读取数据和写入文件之间添加一个检查,确保不会将null值写入文件。这里是修改后的代码:
- public class Serverx {
- public static void main(String args[]) throws IOException {
- //创建对象并绑定端口
- ServerSocket ss = new ServerSocket(10000);
- //等待客户端连接
- Socket socket = ss.accept();
- //读取数据并保存到本地文件
- BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
- BufferedWriter bh = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("d://新建文件夹//xiao.txt"), "UTF-8"));
-
- String s;
- while ((s = br.readLine()) != null) {
- bh.write(s);
- bh.newLine();
- bh.flush();
- }
-
- socket.close();
- ss.close();
- }
- }
复制代码
现在,当从BufferedReader读取到null值时,循环会结束,不会尝试将null值写入文件。这样可以防止出现NullPointerException异常。
|
|