相关疑难解决方法(0)

如何用Java编写UTF-8文件?

我有一些当前的代码,问题是它创建了一个1252代码页文件,我想强制它创建一个UTF-8文件

任何人都可以帮我这个代码,因为我说它目前工作...但我需要强制保存在utf ..我能传递一个参数或什么?

这就是我所拥有的,任何帮助都非常感激

var out = new java.io.FileWriter( new java.io.File( path )),
        text = new java.lang.String( src || "" );
    out.write( text, 0, text.length() );
    out.flush();
    out.close();
Run Code Online (Sandbox Code Playgroud)

java file-io utf-8

171
推荐指数
7
解决办法
34万
查看次数

如何处理一个非常大的文本文件?

我正在写一些需要处理非常大的文本文件的东西(至少有几个GiB).这里需要什么(这是固定的)是:

  • 基于CSV,遵循RFC 4180,但嵌入式换行符除外
  • 随机读取线路,尽管大多数是逐行接近终点
  • 最后添加行
  • (换行).显然,要求重写文件的其余部分,这也很少见,所以目前不是特别重要

该文件的大小不许在存储器完全保持它(这也是不希望的,附加的变化时,应尽快持续自).

我曾想过使用内存映射区域作为文件的窗口,如果请求超出其范围的行,它将被移动.当然,在那个阶段我仍然没有字节级别以上的抽象.为了实际使用内容我CharsetDecoder给了我一个CharBuffer.现在的问题是,我可以处理文本行可能就好了CharBuffer,但我还需要知道文件中该行的字节偏移量(以保持行索引和偏移的缓存,所以我不必再次从头开始扫描文件以查找特定行.

有没有办法CharBuffer将匹配ByteBuffer中的偏移量映射到匹配中?使用ASCII或ISO-8859-*显然是微不足道的,对于UTF-8和ISO 2022或BOCU-1来说,事情会变得非常丑陋(不是我实际上期望后两种,但UTF-8应该是默认值) - 并且仍然存在问题).

我想我可以CharBuffer再次将一部分转换为字节并使用长度.无论是工作还是我遇到了变音符号的问题,在这种情况下我可能会强制要求使用NFC或NFD以确保文本始终是明确编码的.

不过,我想知道这是不是要走到这里的方式.有更好的选择吗?

ETA:有人回答常见问题和建议:

这是用于模拟运行的数据存储,旨在成为完整数据库的小型本地替代方案.我们也有数据库后端并且它们被使用,但是对于它们不可用或不适用的情况,我们确实需要这样做.

我也只支持CSV的一个子集(没有嵌入式换行符),但现在还可以.这里有问题的几点是我无法预测线条的长度,因此需要创建文件的粗略地图.

至于什么我上面概述:我在思考的问题是,我可以很容易地确定对人物等级一行的末尾(U + 000D + U + 000A),但我不想假设这看起来像0A 0D上字节级别(对于UTF-16已经失败,例如,它或者是0D 00 0A 00或者00 0D 00 0A).我的想法是,我可以通过不对当前使用的编码细节进行硬编码来使字符编码变得可变.但我想我可以坚持使用UTF-8并将其他所有东西都加入其中.但不知何故,感觉不对劲.

java nio text-files

13
推荐指数
1
解决办法
2275
查看次数

标签 统计

java ×2

file-io ×1

nio ×1

text-files ×1

utf-8 ×1