繁体   English   中英

从文件中获取不想要的结果

[英]Fetching from file giving unwanted result

我正在尝试通过以下方式写入文件:

for(String s : str){
     buffer.put(s.getBytes());
     buffer.flip();
     channel.write(buffer);
      buffer.clear();
}

因此,每当我通过char c = (char)randomAccessFile.readChar();从文件中获取数据时,

在这里,我没有得到字符串中的字符。 有人可以告诉我原因。

为什么要转换一个String另一件事是假设尝试字节化,即string.getBytes()它给出6个字节。 但是我们知道char需要2个字节,因此应该为16*6=96

RandomAccessFile期望字节是基础字符串的内存表示形式。 调用String.getBytes()您将获得基础字符串的标准表示形式。 这是与RandomAccessFile一起使用的示例代码。 请注意,它不是使用getBytes()而是将基础char为一个byte

public static void main(String [] args) throws IOException {
    String str = "foo";

    SeekableByteChannel channel = Files.newByteChannel(Paths.get("C:\\tmp\\foo.txt"), StandardOpenOption.CREATE, StandardOpenOption.WRITE, StandardOpenOption.TRUNCATE_EXISTING);
    ByteBuffer buffer = ByteBuffer.allocate(1024);
    for(int i = 0; i < str.length(); i++) {
        char ch = str.charAt(i);
        buffer.put((byte)(ch >> 8));
        buffer.put((byte)ch);
    }
    buffer.flip();
    channel.write(buffer);

    RandomAccessFile file = new RandomAccessFile("/tmp/foo.txt", "rw");
    try {
        while(true) {
            System.out.println(file.readChar());
        }
    } finally {
        file.close();
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM