質問

「Windows ファイル」と「UNIX ファイル」の唯一の違いは改行であると考えるのは正しいですか?

Windows マシンから UNIX マシンにシステムを移行しましたが、フォーマットに問題があります。

ファイルが「トランスポートシステム」のシステムに配信される前に、UNIX/Windows 間の変換を自動化する必要があります。おそらく、現在の形式を決定するものと、それを他の形式に変換するものが必要になるでしょう。大きな違いが改行だけである場合は、java.io を使用してファイルを読み取ることを検討しています。私の知る限り、readLine では両方を処理できます。そして、各行を次のように書き戻すだけです

while (line = readline)
    print(line + NewlineInOtherFormat)
....

まとめ:

サムジャドソン:

これはテキスト ファイルの違いにすぎません。UNIX では改行を示すために 1 つの改行 (LF) が使用され、Windows では復帰/改行 (CRLF) が使用され、Mac では CR のみが使用されます。

これに セブジュル 詳しく説明します:

OS X は UNIX と同じ LF を使用します。ただし、MacOS 9 以前では CR を使用していました。

モー

国別文字の文字エンコーディングが異なる場合もあります。「unix エンコーディング」はありませんが、多くの Linux バリアントはデフォルトのエンコーディングとして UTF-8 を使用します。Mac OS (これも UNIX) は独自のエンコーディング (macroman) を使用します。Windowsのデフォルトのエンコーディングが何であるかわかりません。

マクダウェル

Windows でファイルが Unicode として扱われる場合、改行の違いに加えて、バイト オーダー マークによって問題が発生する可能性があります。

チーキーソフト

ただし、シングル/マルチバイト文字エンコーディングに関連した別の問題が発生する可能性があります。予期せぬ奇妙な文字 (行末ではない) が表示される場合は、これが原因である可能性があります。特に、四角いボックス、疑問符、逆さまの疑問符、余分な文字、または予期しないアクセント付き文字が表示される場合はそうです。

セイディ

UNIX では、. で始まるファイル。隠されています。Windows では、これはファイル システム フラグであり、おそらく簡単にはアクセスできません。これにより、非表示であるはずのファイルがクライアント マシンに表示される可能性があります。

ファイルのアクセス許可は 2 つ間で異なります。UNIX システムにファイルをコピーすると、そのファイルはコピーを行ったユーザーに属し、権限が制限されていることがわかるでしょう。chown/chmod を使用して、正しいユーザーがそれらにアクセスできることを確認する必要があります。

この問題を解決するためのツールが存在します。

ポールドゥー

テキスト ファイルの内容にだけ興味がある場合は、行末が異なることに注意してください。dos2unix などを見てください。ここで役立つかもしれません。

チーキーソフト

pauldoo が示唆しているように、dos2unix のようなツールは非常に便利です。これらは、Linux/UNIX システム上に fromdos または tofrodos として、あるいは汎用ツールボックスのリコードとして存在する可能性があることに注意してください。

Javaコーディングのヘルプ

チーキーソフト

ファイルに書き込むとき、またはファイルから読み取るとき (制御しているファイル)、ほとんどの Java メソッドでこれが許可されているため、使用するエンコードを指定する価値があることがよくあります。ただし、システム ロケールが一致していることを確認すると、多くの手間を省くことができます。

役に立ちましたか?

解決

これはテキスト ファイルの違いにすぎません。UNIX では改行を示すために 1 つの改行 (LF) が使用され、Windows では復帰/改行 (CRLF) が使用され、Mac では CR のみが使用されます。

バイナリ ファイルには違いがないはずです (つまり、Windows マシン上の JPEG は、UNIX マシン上の同じ JPEG とバイトごとに同じになります。)

他のヒント

国別文字の文字エンコーディングが異なる場合もあります。「unix エンコーディング」はありませんが、多くの Linux バリアントはデフォルトのエンコーディングとして UTF-8 を使用します。Mac OS (これも UNIX) は独自のエンコーディング (macroman) を使用します。Windowsのデフォルトのエンコーディングが何であるかわかりません。

しかし、これは (改行の違いとは別に) 別のトラブルの原因になる可能性があります。

あなたの問題は何ですか?改行関連の問題は、unix マシン上のプログラム dos2unix または unix2dos を使用して簡単に修正できます。

テキスト ファイルの内容にだけ興味がある場合は、行末が異なることに注意してください。次のようなものを見てください dos2unix, 、ここが役立つかもしれません。

(もちろん、unix と Windows のファイルを相違させる点は他にもたくさんありますが、現時点では、その他の違いには興味がないと思います。)

与えられた回答に加えて、さまざまなファイル システムに関する問題が見つかる可能性があります。

  • UNIX では、 . 隠されています。Windows では、これはファイル システム フラグであり、おそらく簡単にはアクセスできません。これにより、非表示であるはずのファイルがクライアント マシンに表示される可能性があります。

  • ファイルのアクセス許可は 2 つ間で異なります。UNIX システムにファイルをコピーすると、そのファイルはコピーを行ったユーザーに属し、権限が制限されていることがわかるでしょう。を使用する必要があります chown/chmod 正しいユーザーがそれらにアクセスできることを確認します。

改行の違いに加えて、 バイトオーダーマーク Windows 上でファイルが Unicode として扱われる場合、問題が発生する可能性があります。

pauldoo が示唆しているように、dos2unix のようなツールは非常に便利です。これらは Linux/UNIX システム上にある可能性があることに注意してください。 フロムドス または トフロドス, 、あるいはおそらく汎用ツールボックスとしても 記録する.

ただし、シングル/マルチバイト文字エンコーディングに関連した別の問題が発生する可能性があります。予期せぬ奇妙な文字 (行末ではない) が表示される場合は、これが原因である可能性があります。特に、四角いボックス、疑問符、逆さまの疑問符、余分な文字、または予期しないアクセント付き文字が表示される場合はそうです。

コマンドの実行 ロケール *nix ボックスにシステム ロケールが表示されます。これが Windows マシンから転送されたテキスト ファイルで使用されているエンコーディングと異なる場合、それらのファイルの使用方法によっては、問題が発生することがあります。非常に強力な機能を使用できます 記録する コマンドを使用して、異なる文字セット間で変換を試みたり、行末の問題を解決したりできます。 再コード -l ツールが変換できるすべての形式とエンコーディングが表示されます。非常に長いリストになる可能性があります。

ファイルに書き込むとき、またはファイルから読み取るとき (制御しているファイル)、ほとんどの Java メソッドでこれが許可されているため、使用するエンコードを指定する価値があることがよくあります。ただし、システム ロケールが一致していることを確認すると、多くの手間を省くことができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top