19

「windows ファイル」と「unix ファイル」の違いは改行だけだと思いますか?

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

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

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

概要:

サムジャドソン

これは、テキスト ファイルの違いにすぎません。UNIX では単一のライン フィード (LF) を使用して新しい行を示し、Windows ではキャリッジ リターン/ライン フィード (CRLF) を使用し、Mac では CR のみを使用します。

Cebjyreは次のように説明しています。

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 のようなツールは非常に便利です。これらは fromdos または tofrodos として Linux/Unix システム上に存在する場合もあれば、汎用ツールボックスの recode として存在する場合もあります。

Java コーディングのヘルプ

生意気なソフト

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

4

6 に答える 6

13

これは、テキスト ファイルの違いにすぎません。UNIX では単一のライン フィード (LF) を使用して新しい行を示し、Windows ではキャリッジ リターン/ライン フィード (CRLF) を使用し、Mac では CR のみを使用します。

バイナリ ファイルに違いはないはずです (つまり、Windows マシン上の JPEG は、Unix ボックス上の同じ JPEG と同じバイト単位になります)。

于 2008-08-20T09:22:07.477 に答える
4

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

しかし、これは別の問題の原因になる可能性があります (さまざまな改行は別として)。

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

于 2008-08-20T09:22:15.743 に答える
2

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

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

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

于 2008-08-20T09:42:10.190 に答える
2

テキスト ファイルの内容だけに関心がある場合は、はい、行末が異なります。dos2unixのようなものを見てください。ここで役立つかもしれません。

(もちろん、UNIX と Windows のファイルを異なるものにする要素は他にもたくさんありますが、今はそれらの他の違いに興味があるとは思いません。)

于 2008-08-20T09:23:29.517 に答える
1

改行の違いに加えて、ファイルがWindowsでUnicodeとして扱われる場合、バイト順マークが問題を引き起こす可能性があります。

于 2008-08-20T09:28:41.487 に答える
1

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

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

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

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

于 2008-08-20T09:40:26.497 に答える