如何解决如何将带有代码页1250的字符串保存到Java中的RandomAccessFile中
|| 我有带字符串的文本文件,代码页为1250。我想将文本保存到RandomAccessFile中。当我从RandomAccessFile读取字节时,我得到了具有不同字符的字符串。一些解决方案...解决方法
如果您使用的是“ 0”,则应阅读其JavaDoc以了解其始终会编写修改后的UTF-8。
如果要使用其他编码,则必须“手动”进行编码,并以某种方式存储
byte[]
的长度。
例如:
RandomAccessFile raf = ...;
String writeThis = ...;
byte[] cp1250Data = writeThis.getBytes(\"cp1250\");
raf.writeInt(cp1250Data.length);
raf.write(cp1250Data);
阅读将类似地工作:
RandomAccessFile raf = ...;
int length = raf.readInt();
byte[] cp1250Data = new byte[length];
raf.readFully(cp1250Data);
String string = new String(cp1250Data,\"cp1250\");
, 此代码将使用1250代码页写入和读取字符串。当然,在放入prod之前,您需要清理它,检查异常并正确关闭流:)
public static void main(String[] args) throws Exception {
File file = new File(\"/toto.txt\");
String myString=\"This is a test\";
OutputStreamWriter w = new OutputStreamWriter(new FileOutputStream(file),Charset.forName(\"windows-1250\"));
w.write(myString);
w.flush();
CharBuffer b = CharBuffer.allocate((int)file.length());
new InputStreamReader(new FileInputStream(file),Charset.forName(\"windows-1250\")).read(b);
System.out.println(b.toString());
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。