KeleQAQ 2019-10-15 21:13 采纳率: 0%
浏览 1009

JAVA I/O流中read()和write()方法怎么理解

比如 FileWrite 有一个write方法,write(int c),这里的int 型参数c是什么意思,是每次写c个字符吗?

  • 写回答

2条回答 默认 最新

  • 三阶魔方 2019-10-16 00:06
    关注

    我的java估计和楼上不是一个版本

    /**
         * Writes a single character.
         *
         * @exception  IOException  If an I/O error occurs
         */
        public void write(int c) throws IOException {
            se.write(c);
        }
    

    好奇顺便点进去看看。由于这部分不开源,是反编译器看到的代码。

    public void write(int var1) throws IOException {
            char[] var2 = new char[]{(char)var1};
            this.write((char[])var2, 0, 1);
        }
    
        public void write(char[] var1, int var2, int var3) throws IOException {
            synchronized(this.lock) {
                this.ensureOpen();
                if (var2 >= 0 && var2 <= var1.length && var3 >= 0 && var2 + var3 <= var1.length && var2 + var3 >= 0) {
                    if (var3 != 0) {
                        this.implWrite(var1, var2, var3);
                    }
                } else {
                    throw new IndexOutOfBoundsException();
                }
            }
        }
    

    就是一个int的值,强转char类型(相当于byte但是不带符号,基本等同),最终产生一个char数组,从0开始,长度1,写入缓存。

    比如这个int值是48,就存了个0x30或者可称为'0'到文件里。

    评论

报告相同问题?

悬赏问题

  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料