IO流读取文件内容长度与实际不一致

我用字符输入流读取文件内容

判断内容是否为非注释行

如果是非注释行则添加到StringBuilder里面再转成字符串计算长度

但长度和正确答案的少。然后我展示了每一个非注释行的文字长度,发现在头歌平台运行的长度与idea里面运行也不一样

img


比如第一行为什么是21不是20吗,idea里面也是20,但是不论是21还是20好像都比实际的长度小

img

第一行它这个21 是有个换行符吧



```java
//打开一个文件读取内容
        BufferedReader in = new BufferedReader(new FileReader(new File("ClassWork\\a.txt")));
        String line = null;
        /**
         * readLine():读取一行文字,返回String字符串
         * while循环:表示读取到每一行
         */
//        List<String> list = new ArrayList<>();//存储没有注释的文字行
        StringBuilder sb=new StringBuilder();
        while ((line = in.readLine()) != null) {
            //按字符检查是否为注释
            char[] ch = line.toCharArray();//把读取到的这一行转换为char数组
            int i = 0;
            boolean flag=false;//定义一个标志变量,假设它是false,表示当前行不是注释行
            //for循环,对当前行拆分后的字符逐个判断是否有注释符号
            for (i = 0; i < ch.length; i++) {
                //找注释,若这行有注释则不做操作,不添加
                if (ch[i] == '/' && ch[i + 1] == '/') {
                    //修改标志变量,表示当前行是注释行
                    flag=true;
                    break;
                }
            }
            /**
             * 每一个for循环结束后进行判断,如果不是注释行就添加到list当中
             */
            if(flag==false){
                sb.append(line);
               System.out.println(line);
               System.out.println("这是当前行的长度:"+line.length());
            }

        }
        String s = sb.toString();
        int length = s.length();
        System.out.println("文件长度:"+length);
        in.close();

```