使用java.io.FileWriter写入整数时出现Unclosed Character Literal错误求助
问题解决与实现方案
一、FileWriter写入报错原因及修复
你遇到的error: unclosed character literal错误,核心原因是char类型字面量只能用单引号包裹单个字符。代码里'10'、'20'、'30'都是多字符组合,违反了char类型的语法规则,编译器会判定为未闭合的字符字面量。
修复方案
如果要写入整数10、20、30,推荐两种简洁方式:
- 直接写入字符串形式(最常用):
FileWriter fw = new FileWriter("fw.txt"); fw.write("10 20 30"); // 用空格分隔整数,方便后续读取 fw.flush(); fw.close(); // 必须关闭流释放资源
- 拆分为单个字符的数组:
FileWriter fw = new FileWriter("fw.txt"); fw.write(new char[]{'1','0',' ','2','0',' ','3','0'}); fw.flush(); fw.close();
二、使用java.io.BufferedReader实现整数读写
注意:BufferedReader仅负责读取操作,写入需配合同属java.io包的BufferedWriter(IO流的分工设计决定了单独BufferedReader无法完成写入)。以下是完整的读写实现:
1. 写入整数到文件
通过BufferedWriter将整数转为字符串写入,用分隔符(如空格)区分每个整数:
import java.io.BufferedWriter; import java.io.FileWriter; import java.io.IOException; public class IntegerWriteDemo { public static void main(String[] args) { int[] nums = {10, 20, 30, 40, 50}; // try-with-resources语法自动关闭流,无需手动调用close() try (BufferedWriter bw = new BufferedWriter(new FileWriter("integers.txt"))) { for (int num : nums) { bw.write(String.valueOf(num)); bw.write(" "); // 写入分隔符,方便读取时拆分 } } catch (IOException e) { e.printStackTrace(); } } }
2. 用BufferedReader读取文件中的整数
读取文件内容,按分隔符拆分字符串后转为整数:
import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; public class IntegerReadDemo { public static void main(String[] args) { try (BufferedReader br = new BufferedReader(new FileReader("integers.txt"))) { String line = br.readLine(); if (line != null) { // 按任意空白字符拆分字符串,兼容多个空格/制表符的情况 String[] numStrs = line.split("\\s+"); for (String numStr : numStrs) { int num = Integer.parseInt(numStr); System.out.println("读取到整数:" + num); } } } catch (IOException | NumberFormatException e) { // 捕获IO异常和格式转换异常,避免程序崩溃 e.printStackTrace(); } } }
内容的提问来源于stack exchange,提问作者VIMALRAJ S
相关产品推荐
相关产品推荐

