1

私はこのコマンドを使用しています:

Get-ChildItem | Foreach-Object {$_.BaseName} > file_names.txt

現在のディレクトリのファイル名をファイルに出力します(最終的な拡張子なし)。ファイル名をメモ帳で開くと、ファイル名が正しく表示されます。はい、十分に簡単です。涼しい。

私の問題は、Java で BufferedReader を使用してファイル名を読み取ると、ファイル名の形式が正しくないことです。例えば、

20100916_090350_S1_1_auto gain test_1.Rad が

ÿþ2 0 1 0 0 9 1 6 _ S 1 _ 1 _ autogaintest _ 1 . アド

(.Rad 拡張子がそこにあるはずです。その後に、削除したい別の拡張子がありました)

これはある種のばかげた Windows エンコーディングの問題だと思います。残念ながら、私はこれらの種類のことについて何も知りません。これに関するヘルプは大歓迎です。

ありがとう

4

2 に答える 2

4

Powershell はデフォルトで Unicode を発行し、最初に表示される文字は BOM (バイト オーダー マーク) と呼ばれます。defaultJava に Unicode を読み取らせるかOEM、Powershell に他のエンコーディングを強制的に出力させることができOut-Fileます-Encoding。要約すると、これを試してください:

Get-ChildItem | ForEach-Object {$_.BaseName} | Out-File -Encoding default file_names.txt
于 2013-08-07T16:58:44.010 に答える
0

おそらくASCII出力を使用したいでしょう。これを使って:

Get-ChildItem | ForEach-Object {$_.BaseName} | Out-File -Encoding ASCII -FilePath file_names.txt
于 2013-08-07T17:13:14.560 に答える