ブラウザでダウンロード SHIFT_JIS で入力して UTF8N(UTF8) で出力するJava のテキストファイル入力は、3つのクラスを1セットで使用します ( デフォルトの文字エンコーディングのみならば、FileReader と BufferedReader ) FileInputStream( バイトストリーム ) ▼ InputStreamReader( キャラクタセット処理 ) ▼ BufferedReader ( 行単位で処理する ) ※ 有効なキャラクタセットはこちら 書き込みで UTF8 を指定すると、いわゆる UTF8N になりますので、 BOM( EF BB BF ) が必要な場合は、事前に自分で FileOutputStream を使用して書き込みます 001. package action; 002. 003. import javax.swing.*; 004. import java.awt.*; 005. import java.io.*; 006. 007. //***************************************************** 008. // サンプルテストクラス 009. //***************************************************** 010. public class Check { 011. 012. //************************************************* 013. // ●● テキストファイル処理 ●● 014. // 015. // 【1】FileInputStream(String name) で 016. // ( InputStream => FileInputStream ) 017. // InputStream を作成し、 018. // 019. // 【2】InputStreamReader(InputStream in, String charsetName) 020. // ( Reader => InputStreamReader ) 021. // で Reader を作成し 022. // 023. // 【3】BufferedReader(Reader in) に渡す 024. //************************************************* 025. public static void testProc(Object[] param) { 026. 027. System.out.println( "処理開始" ); 028. System.out.println(((AppWindow)param[ 0 ]).titleString); 029. 030. String targetFile = "..\\readme.txt" ; 031. String resultFile_utf8n = "..\\readme.utf8n.txt" ; 032. String resultFile_utf8 = "..\\readme.utf8.txt" ; 033. String resultFile_ujis = "..\\readme.ujis.txt" ; 034. 035. try { 036. 037. // 生のバイトのストリーム 038. // キャラクタセットを指定して読み込む為に、使用する 039. // ↓【readme.txt】 040. FileInputStream fis = new FileInputStream(targetFile); 041. 042. // SHIFT_JIS として読み込む為の準備 043. // ↓【 FileInputStream】 044. InputStreamReader isr = new InputStreamReader(fis, "SJIS" ); 045. 046. // 行単位で読み込む為の準備 047. BufferedReader br = new BufferedReader(isr); 048. 049. String line_buffer; 050. 051. // BufferedReader は、readLine が null を返すと読み込み終了 052. while ( null != (line_buffer = br.readLine() ) ) { 053. // コマンドプロンプトに表示 054. System.out.println(line_buffer); 055. } 056. 057. // 各々受け持ちクラスを閉じる 058. br.close(); 059. isr.close(); 060. fis.close(); 061. 062. 063. // ******************************************************* 064. // ※ "UTF8" で、UTF8N になります 065. // UTF8N に変換の為、再度同じファイルを入力 066. // 今度は入力は変数を使わずに書く 067. // ******************************************************* 068. br = new BufferedReader( 069. new InputStreamReader( 070. new FileInputStream(targetFile), "SJIS" 071. ) 072. ); 073. // ******************************************************* 074. // UTF8N 用の書き込み用のインスタンスを同様に作成 075. // ******************************************************* 076. BufferedWriter bw = new BufferedWriter( 077. new OutputStreamWriter( 078. new FileOutputStream(resultFile_utf8n), "UTF8" 079. ) 080. ); 081. 082. while ( null != (line_buffer = br.readLine() ) ) { 083. // CrLf にするには、その通りに書き込む 084. bw.write( line_buffer + "\r\n" ); 085. } 086. bw.close(); 087. br.close(); 088. 089. 090. // ******************************************************* 091. // BOM( EF BB BF ) 付きにするには自分で先に書き出す 092. // ******************************************************* 093. br = new BufferedReader( 094. new InputStreamReader( 095. new FileInputStream(targetFile), "SJIS" 096. ) 097. ); 098. FileOutputStream fos = new FileOutputStream(resultFile_utf8); 099. fos.write( 0xef ); 100. fos.write( 0xbb ); 101. fos.write( 0xbf ); 102. bw = new BufferedWriter( 103. new OutputStreamWriter( 104. fos, "UTF8" 105. ) 106. ); 107. 108. while ( null != (line_buffer = br.readLine() ) ) { 109. // CrLf にするには、その通りに書き込む 110. bw.write( line_buffer + "\r\n" ); 111. } 112. bw.close(); 113. fos.close(); 114. br.close(); 115. 116. 117. // ******************************************************* 118. // EUC-JP に変換の為、再度同じファイルを入力 119. // ******************************************************* 120. br = new BufferedReader( 121. new InputStreamReader( 122. new FileInputStream(targetFile), "SJIS" 123. ) 124. ); 125. // ******************************************************* 126. // EUC-JP にするには "EUC_JP" でも "EUC-JP" OK 127. // ******************************************************* 128. bw = new BufferedWriter( 129. new OutputStreamWriter( 130. new FileOutputStream(resultFile_ujis), "EUC_JP" 131. ) 132. ); 133. 134. while ( null != (line_buffer = br.readLine() ) ) { 135. bw.write( line_buffer + "\r\n" ); 136. } 137. bw.close(); 138. br.close(); 139. 140. } 141. catch ( Exception e ) { 142. System.out.println(e.getMessage()); 143. } 144. 145. System.out.println( "処理終了" ); 146. 147. ((AppWindow)param[ 0 ]).MsgOk( "処理完了" ); 148. 149. } 150. 151. } |