gpt4 book ai didi

java - 使用字节数组创建新字符串会产生奇怪的结果

转载 作者:行者123 更新时间:2023-12-01 12:35:55 25 4
gpt4 key购买 nike

我正在使用 RandomAccessFile 类的 readFully 方法读取文件,但结果不是我所期望的。

这是一个简单的函数,它读取文件并使用存储所有字节的字节数组返回一个新字符串:

public String read(int start)
{
setFilePointer(start);//Sets the file pointer

byte[] bytes = new byte[(int) (_file.length() - start)];

try
{
_randomStream.readFully(bytes);
}
catch(IOException e)
{
e.printStackTrace();
}

return new String(bytes);
}

主要内容:

public static void main(String[] args)
{
String newline = System.getProperty("line.separator");

String filePath = "C:/users/userZ/Desktop/myFile.txt";
RandomFileManager rfmanager = new RandomFileManager(filePath, FileOpeningMode.READ_WRITE);

String content = rfmanager.read(10);

System.out.println("\n"+content);

rfmanager.closeFile();
}

此函数在 RandomFileManager 的构造函数中调用。如果文件尚不存在,它将创建该文件。

private void setRandomFile(String filePath, String mode)
{
try
{
_file = new File(filePath);

if(!_file.exists())
{

_file.createNewFile();// Throws IOException
System.out.printf("New file created.");
}
else System.out.printf("A file already exists with that name.");

_randomStream = new RandomAccessFile(_file, mode);

}
catch(IOException e)
{
e.printStackTrace();
}
}

我使用这种写入方法写入文件:

public void write(String text)
{
//You can also write
if(_mode == FileOpeningMode.READ_WRITE)
{
try
{
_randomStream.writeChars(text);
}
catch(IOException e)
{
e.printStackTrace();
}
}
else System.out.printf("%s", "Warning!");
}

输出: enter image description here

最佳答案

I used the writeChars method.

这会将所有字符写入 UTF-16,这不太可能是默认编码。如果您使用 UTF-16BE 字符编码,这将解码字符。 UTF_16 每个字符使用两个字节。

如果您只需要 (char) 0(char) 255 之间的字符,我建议使用 ISO-8859-1 编码,因为它的大小会减半。

关于java - 使用字节数组创建新字符串会产生奇怪的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25594137/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com