投稿

ラベル(Java)が付いた投稿を表示しています

【Java】ファイル入出力のベストプラクティスを考える

イメージ
Java で ファイル の 読み込み 、 書き込み をする方法を調べていると、 コーディング する人によって様々な書き方があることが分かりました。 そこで、それらをまとめて最も 効率 の良い書き方を考えましたので、ご紹介したいと思います。 ファイル入出力 基本的には、 File クラス を使用すれば 読み書き が可能なのですが、 効率 を考えて以下の クラス を使い ラッピング することにしました。 ファイル読み込みクラス FileInputStream InputStreamReader BufferedReader ファイル書き込みクラス FileOutputStream OutputStreamWriter BufferedWriter PrintWriter ポイント 文字コード を指定できるように Stream 系の クラス を使用します。 処理速度 を向上させるために、 Buffered 系の クラス を使用しています。 また、 ファイル 書き込み クラス では、 FileWriter でなく、出力文字列の整形などのテキスト出力に特化した機能がある PrintWriter を採用しました。 Javaのファイル読み込みにはたくさんの方法がありますが、どの方法が一番早いのか測定してみた。今回は全行読み込みにて測定してみました。#対象1.Files.readAllLinesJava7から導入されているjava.nio... ファイル読み込みは何がベストなのか(Java) - Qiita - Qiita Javaサンプルコード public static void main(String[] args) { // ファイルパス String InputFile = args[0]; String OutputFile = args[1]; // 変数初期化 BufferedReader reader = null; PrintWriter writer = null; // 処理開始 try { // リーダ reader = new BufferedReader( ...

Javaでサロゲートペア文字を置換したり除去する2つの方法

イメージ
前回、 Java で ASCII の 制御文字 の取り扱いについて記事にしました。 そして今回は、前回の対策を応用して、もっと厄介な サロゲートペア文字 を Java でゴニョゴニョする方法を2つ程ご紹介したいと思います。 今までJavaに関する記事を投稿したことはありませんが、仕事で少しだけ文字コードの変換を行う際に使いましたので、記事にしたいと思います。何分、Javaに関しては初心者ですので、誤り等ありましたらご指摘の程よろしくお願い致します。初回はASCII制御文字を置換す... JavaでASCIIの制御文字を置換する3つの方法 - Minory サロゲートペア文字とは? 簡単に説明すると、全世界で 文字コード を統一するため、 Unicode という 文字コード が一般的に主流になっています。 通常 1文字を2バイト で表現するのですが、2バイト(65536文字)では文字が足りなくなってしまったため、 1文字を4バイト で表現する方法として「 サロゲートペア 」が誕生しました。 Windows VistaのJIS2004対応により、WindowsのUnicode環境で使用できる日本語漢字が907字追加されました。しかしこの中には「サロゲートペア」と呼ばれる文字が含まれており、文字を取り扱うには適切な処理が必要になります。 サロゲートペア入門 - Codezine サロゲートペアは何が問題なの? 今ではそんなに意識することはなくなりましたが、古いシステムや古いデータを取り扱う際に 問題 が発生してしまいます。 と言うのも、昔は Unicode 以外の 文字コード も多く使われていました。 それ故にバグ、いわゆる 文字化け が発生してしまうのです。 これによって、 データ の不整合が起きたり、 プログラム が想定したとおりに動かなかったりします。 サロゲートペア文字一覧 実際、 サロゲートペア文字 にはどのような文字があるのか、Qiitaの記事をご覧ください。 JavaでTwitterのような140文字制限をかけようとするときに考える必要がある。サロゲートペアについて。## サロゲートペアとはサロゲートペアとは、16 ビット符号単位の組による単一の抽象文字の表現である。 UTF-1...

JavaでASCIIの制御文字を置換する3つの方法

イメージ
今まで Java に関する記事を投稿したことはありませんが、仕事で少しだけ 文字コード の 変換 を行う際に使いましたので、記事にしたいと思います。 何分、 Java に関しては初心者ですので、誤り等ありましたらご指摘の程よろしくお願い致します。 初回は ASCII 制御文字 を 置換 する方法について紹介します。 1. 正規表現を利用した置換方法 特定の文字を単純に指定した文字に置換するだけなら、 文字列 ( String )に対して replaceAll() を利用して1行で済みます。 str.replaceAll("\\p{C}", ""); Stack Overflow にQ&Aがありましたので、そのまま引用しています。 The following will replace ASCII control characters (shorthand for ):my_string.replaceAll("\\p{Cntrl}", "?");The following will replace all ASCII non-printable characters (shorth... How can I replace non-printable Unicode characters in Java? - Stack Overflow この 正規表現 「 \p{C} 」(先頭のバックスラッシュ”\”はエスケープです)は、 ASCII 制御文字 である「 0x00 〜 0x1F 」を削除します。 詳しい 正規表現 はこちらをご覧ください。 Regex Tutorial - Unicode Characters and Properties - regular-expressions.mobi 基本はこれで問題ないです。 しかし、 文字コード を細かく指定したい場合は、次の2つの方法が有効です。 2. 1文字ずつ判定して置換する方法 以下のコードは、 文字列 (String)を1文字ずつ ループ し、 文字コード が ASCII 制御文字 かどうかを 判定 して 置換 します。 最終的に置換後の 文字列...