我有一个用孟加拉语、英语、印地语等编写的文本文件。我想阅读该文件。然后我想对这个字符串执行一些操作。最后,我将把生成的字符串写入另一个文件中。
我尝试过,但没有解决我的问题。那么,我应该怎么做才能解决我的问题呢?
BufferedReader read = new BufferedReader(
new InputStreamReader(
new FileInputStream ("Input1.txt"), StandardCharsets.UTF_8) );
Writer writeFirst = new BufferedWriter(
new OutputStreamWriter(
new FileOutputStream("Input.txt",true), StandardCharsets.UTF_16));
String str =null ;
while ((str = read.readLine()) != null) {
String[] words = str.split(" ");
// will do some operation on those strings
for(String u : words) {
writeFirst.write(u + " ") ;
}
writeFirst.write("\n") ;
}
输入:
i love my country
আমি আমার দেশকে ভালোবাসি
我得到的输出:
��I l o v e m y c o u n t r y
��I l o v e m y c o u n t r y
��I l o v e m y c o u n t r y
��I l o v e m y c o u n t r y
��I l o v e m y c o u n t r y
��I l o v e m y c o u n t r y
��I l o v e m y c o u n t r y
��I l o v e m y c o u n t r y
��i l o v e m y c o u n t r y
��i l o v e m y c o u n t r y ��i l o v e m y c o u n t r y ��i l o v e m y c o u n t r y ��i l o v e m y c o u n t r y � � � � � � � � � � � � � � � � � � � �
最佳答案
你的代码基本上可以工作。如果您必须使用 UTF-16,我建议将输出文件的编码从 UTF-16 显式更改为 UTF-16BE。
我稍微改进了资源使用:
public static void main(String args[]) {
try (InputStream is = new FileInputStream(Paths.get(args[0]).toFile());
Reader reader = new InputStreamReader(is, StandardCharsets.UTF_8);
BufferedReader in = new BufferedReader(reader);
OutputStream os = new FileOutputStream(Paths.get(args[1]).toFile(), true);
Writer writer = new OutputStreamWriter(os, StandardCharsets.UTF_16BE);
BufferedWriter out = new BufferedWriter(writer)) {
String line;
while ((line = in.readLine()) != null) {
String[] words = line.split(" ");
System.out.println(
String.format("writing line '%s' which has %d words",
line, words.length));
// will do some operation on those strings
for (String word : words) {
out.write(word + " ");
}
out.write("\n");
}
} catch (IOException ex) {
System.err.println(ex.getMessage());
}
}
生成的文件(在 args[1]
上给出)已正确编码。这可以使用 iconv
进行验证将其转换为 UTF-8:
$ iconv -f UTF16BE -t UTF8 output.UTF16BE.txt
i love my country
আমি আমার দেশকে ভালোবাসি
如您所见,内容是正确的,并且包含单词之间添加的空格。
关于java - 如何从文件中读取文本(文本语言不固定)并执行某些操作将其写入另一个文件中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51303289/