0

这是我的代码:

        fis = openFileInput("MY_FILE");
        StringBuffer fileContent = new StringBuffer("");
        byte[] buffer = new byte[1024];
        while (fis.read(buffer) != -1) {
            fileContent.append(new String(buffer));
        }
        String myVariable = fileContent.toString().trim();

为什么 StringBuffer 需要字节?这究竟是如何工作的?

将 myVariable 设置为 fileContent 时,为什么它的数据后面有多余的空格?(假设 MY_FILE 包含文本 "dad" )

如果没有 trim 方法,它会将变量设置为:dad


在爸爸之后有很多空白。即使文本文件只说“爸爸”

4

2 回答 2

4

你会得到空格,因为当你的文本是“爸爸”时,你的缓冲区大小是 1024,这意味着缓冲区中有很多空白空间。

由于 byte 是原始数据类型,因此缓冲区中的空白空间的内容不能为 null,而是默认为 0,将其转换为 String 时将其解释为空白。

于 2013-06-27T08:11:01.613 回答
2

原因在 Raghav Sood 的回答中。您可以使用以下方法克服它:

byte[] buffer = new byte[1024];
int read = 0; // saves how many bytes were actually read
while ((read = fis.read(buffer)) != -1) {
    // don't use the complete buffer, only the used part of it.
    fileContent.append(new String(buffer, 0, read));
}
String myVariable = fileContent.toString();
于 2013-06-27T08:19:59.513 回答