【问题标题】:java randomAccessFile write every thing with space between each characterjava randomAccessFile 用每个字符之间的空格写入所有内容
【发布时间】:2012-02-24 13:20:09
【问题描述】:

我用这个函数在特定索引中写了一行:

 private void write_line(Student s,int index){
        try {
            Student_pool.seek(0);
           Student_pool.seek(index*(25*Integer.SIZE+4*Character.SIZE));
            Student_pool.writeChars(s.getId());
            Student_pool.writeChars(s.getHw().substring(0,2));
            Student_pool.writeChars(".");
            Student_pool.writeChars(s.getHw().substring(3,5));
            Student_pool.writeChars(s.getPrj().substring(0,2));
            Student_pool.writeChars(".");
            Student_pool.writeChars(s.getPrj().substring(3,5));
            Student_pool.writeChars(s.getMidtermExam().substring(0,2));
            Student_pool.writeChars(".");
            Student_pool.writeChars(s.getMidtermExam().substring(3,5));
            Student_pool.writeChars(s.getFinalExam().substring(0,2));
            Student_pool.writeChars(".");
            Student_pool.writeChars(s.getFinalExam().substring(3,5));
            Student_pool.writeChars("\n");
            Student_pool.getFD().sync();
        } catch (IOException ex) {
            Logger.getLogger(Storagelmpl.class.getName()).log(Level.SEVERE, null, ex);
        }
        }

但是当我尝试打开文件时,结果不正确,每个字符后面都有一个空格。 结果如下所示:

 8 1 0 1 8 7 3 1 2 2 0 . 0 0 2 0 . 0 0 2 0 . 0 0 2 0 . 0 0 
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 8 1 0 1 8 8 2 7 5 1 6 . 0 0 1 0 . 0 0 1 3 . 0 0 1 9 . 0 0 

我认为我的编码存在问题,而我的查找操作数存在另一个问题。 但我不知道如何解决它。

【问题讨论】:

    标签: java file-io io


    【解决方案1】:

    它的行为与记录完全一致:

    writeChars 的文档:

    将字符串作为字符序列写入文件。每个字符都被写入数据输出流,就像通过 writeChar 方法一样。写入从文件指针的当前位置开始。

    writeChar 的文档:

    将 char 作为两字节值写入文件,先是高字节。写入从文件指针的当前位置开始。

    你真的需要RandomAccessFile 吗?有什么理由不使用 FileOutputStream 包装在 OutputStreamWriter 中使用您想要的任何编码?有什么办法可以避免像这样在任意位置写入数据?

    可以使用writeBytes 而不是writeChars - 这基本上会写出只写ISO-8859-1 字符 - 这对你来说足够了吗?但它不会保留非 ISO-8859-1 数据...

    【讨论】:

    • 关于我的搜索功能,我是否传递了正确的操作数?(我有 25 个整数和每行 4 个字符)
    • @pooya:你没有每行有 4 个字符 - 看看你写的所有字符!您正在编写 any 整数也完全不清楚。它对我来说只是角色......
    • 起初它们是整数。非常感谢。
    • @pooya:“起初它们是整数”是什么意思?你不是将它们为整数——你明白我的意思吗?您似乎在计算该值,就好像您将整数值写为 二进制数据,而不是文本。
    • 我的意思是起初我将它们打印为整数然后我忘记更改我的计算。
    猜你喜欢
    • 2020-05-17
    • 1970-01-01
    • 1970-01-01
    • 2015-10-23
    • 1970-01-01
    • 2018-05-17
    • 2020-06-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多