2010-12-01 6 views
1

私はプラットフォームの開発者の一人で、さまざまなスクリプトを使用して処理するために、ユーザーがさまざまなソースからデータファイルをアップロードできるようにしています。 rをローカルシステム改行に変換するFilterInputStreamはありますか?

Mac用Excelからのタブ区切りのデータファイルで問題が発生し続ける。 Excel for Mac(Mac OS Xでも)は、CR文字(\ r)で行を終了します。 Linux(および現代Mac)標準はLF(\ n)です。 (WindowsはCR LF、別名\ r \ nです。)スクリプトはLinuxマシン上で実行されるため、1行の文字を行終端文字として識別することは絶対にできません。

バックエンドでは、通常のAPIを使用してInputStreamをJCRノードに送ります。私は私たちの改行変換を行うFilterInputStreamが欲しいです。明らかにそれを書くのはあまりコードではありませんが、それは明白なケースです。これを行うための缶詰された図書館があれば、他の人々が私たちのために最善の条件を作ってくれることを願って、それを好むでしょう。

FilterInputStreamや他のInputStreamの中で、ほとんどの標準改行形式をLF(またはシステム改行文字)に変換するオープンソースライブラリはありますか?いくつかのGoogle検索では何も明らかにならなかったが、何かがなければ私は驚くだろう。

もしそうでなければ、これを書いている足で私を撃つ可能性のあるエッジ条件は何ですか?

+4

これらのダーウィンプログラムをすべて終了する方法が見つかった場合は、MacRoman **の使用を中止し、改行のCRを停止してください。もちろん、あなたの子供の子供たちにもあなたの賛美歌を歌います。彼らはNLの改行でUTF-8を出すかもしれないし、壊れた遺産を永遠に残しておくかもしれない。 ** AMEN ** – tchrist

答えて

0

BufferedReader.readLine()を使用します。それは、どのような行ターミネータが存在していても、それを解析して削除します。次に、各行をバックエンドに書き込むときは、好きな行終端記号を付け加えます。

+0

'BufferedReader.readLine()'には2つの問題があります。第1に、0,1,2文字のいずれかが読まれているかどうかを知ることはできません。重要なことがあります。ファイルをコピーすることはできません。もう1つの問題は、レイヤーの上にレイヤーを重ねることです。 'InputStreamReader'を使用する場合、4人のコンストラクターのうち3人が壊れていて、使えないことに注意してください!!! **そして、動作するものは誰も使用していないものです。 :( – tchrist

+0

私はJavaのコンテンツリポジトリへのApacheのインターフェイスを使用しています。これはInputStreamを直接受け取り、BufferedReaderに渡すと、ファイル全体をストリームに変換するStringWriter/StringReader /何かを介してメモリにストリームする必要があります私はそれがJCR APIの代替エントリーポイントを調べるでしょうが、とにかくtchristはここで正しいです –

0

CSVファイルは気になるので、空白行は気になりますか?そうでない場合は、連続した(\ n \ r)+を1つの\ nに変換する独自のフィルタを作成してください。空の行は空の行を生成しないことに注意してください。

+0

残念なことに、私のすべてのファイルがCSVであるとは思いません。私はFilterInputStreamを記述して、ファイルを損傷することはありません。 –

関連する問題