我有一个由PowerShell使用命令
生成的文本文件 GetChild-Item C:\Source\Path | ForEach-Object { $_.Name } > "C:\MyPlace\outfile.txt"
这会生成outfile.txt
,就像这个Notepad ++一样打开
但是当用Java打开并逐行读取时:
while((line = br.readLine()) != null) {
line = line.replaceAll("\\s", "");
System.out.println(i + ":\t" + line);
}
它产生了这个:
这完全是我的处理。我试过替换空白字符,但它似乎没有做到这一点。有什么想法吗?
答案 0 :(得分:4)
>
是Out-File
的语法糖,带有一些预定义的参数设置。其中之一是编码。默认情况下,Out-File
将以little endian unicode创建一个文件。因此,要使用ASCII编码生成文件,您可以执行以下操作:
GetChild-Item C:\Source\Path | ForEach-Object { $_.Name } |
Out-File "C:\MyPlace\outfile.txt" -Encoding ASCII
...或者您可以使用默认输出ASCII的Add-Content
:
GetChild-Item C:\Source\Path | ForEach-Object { $_.Name } |
Add-Content "C:\MyPlace\outfile.txt"
答案 1 :(得分:3)
问题似乎是Powershell正在发出一个带有unicode编码的文件,但Java正在将它作为普通的旧ASCII读取。您需要更改java代码以将文件读取为unicode。