Tôi muốn viết một CharSequence để OutputStream bằng cách sử dụng một CharSet được chỉ định. Về cơ bản những gì một Writer được khởi tạo với cùng CharSet sẽ làm, khi viết (String) được gọi.Làm thế nào để mã hóa một CharSequence bằng cách sử dụng một CharSet (không chuyển đổi thành String)
Bắt là, có nhiều CharSequences được viết và một số là khá lớn. Để làm phức tạp hơn, mọi thứ có thể được ghi vào nhiều OutputStream. Tôi có thể dễ dàng thực hiện điều đó bằng cách sử dụng (thực sự tôi hiện đã thực hiện nó theo cách đó):
byte[] rawBytes = CharSequence.toString().getBytes(CharSet)
for (OutputStream out : outputTargets) {
out.write(rawBytes);
}
Nhưng rõ ràng là String là một đối tượng rác hoàn toàn không mong muốn ở đây, như là mảng byte []. Tôi đang tìm một phương pháp cho phép tôi thực hiện mã hóa trực tiếp mà không cần các đối tượng trung gian. Đáng ngạc nhiên điều này dường như là không thể - ở khắp mọi nơi tôi nhìn vào JRE, nơi một CharSequence được chấp nhận nó được nhanh chóng chuyển đổi thành một String trước khi bất kỳ công việc được thực hiện.
Hầu hết (tất cả?) Của công việc chuyển đổi cho CharSet dường như được thực hiện trong các lớp ngoài công lập, vì vậy tôi không tìm thấy cách nào để truy cập vào bất kỳ cách nào một cách minh bạch và hợp pháp.
Làm thế nào để có thể tránh được rác/các cơ sở mã hóa Charlet của JRE được sử dụng trực tiếp?
xem CharsetEncoder – ZhongYu