プログラミングを始めたばかりの初心者で、行き詰っていることがあります。
Windows環境でjavaのプログラミングをしています。(JDK1.7.0_03)
InputFileというファイルを、指定したバイト単位で文字を切り出し、新たなOutputFileという
ファイルに書き出したいのですが、以下の例のように、全角マイナスだけが?と表示されて
しまい、うまくいきません。
InputFile
田中太郎 tanaka tarou タナカタロウ 田中町1-1-1 06011112222・・・
吉田花子 yoshida hanako ヨシダハナコ 吉田町2-2-2 01011113333・・・
山田良子 yamada yoshiko ヤマダヨシコ 山田町3-3-3 02011115555・・・
OutputFile
田中太郎 tanaka tarou タナカタロウ 田中町1?1?1 06011112222・・・
吉田花子 yoshida hanako ヨシダハナコ 吉田町2?2?2 01011113333・・・
山田良子 yamada yoshiko ヤマダヨシコ 山田町3?3?3 02011115555・・・
お見せするのも恥ずかしい滅茶苦茶なソースかもしれませんが現状は以下の通りです。
どなたか教えていただけないでしょうか。よろしくお願い致します。
(読み込むInputFileというファイルの文字コードはEUCです。)
ソース
import java.io.*;
class ReadTest{
static LineNumberReader inr;
static InputStreamReader isr;
static String FN = "InputFile";
static OutputStreamWriter osw;
public static void main(String[] args) {
String line;
try {
FileInputStream fis = new FileInputStream(FN);
isr = new InputStreamReader(fis,"EUC_JP");
inr = new LineNumberReader(new BufferedReader(isr));
FileOutputStream fos = new FileOutputStream("OutputFile");
osw = new OutputStreamWriter(fos,"EUC_JP");
BufferedWriter bw = new BufferedWriter(osw);
while ((line = inr.readLine()) != null) {
bw.write(new String(line.getBytes(),0,120));
bw.newLine();
}
System.out.println(inr.getLineNumber() + "件読み込み完了");
fis.close();
isr.close();
bw.close();
fos.close();
} catch (IOException e) {
System.out.println(e);
}
}
}
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
試してみましたが私の環境では化けませんでした。
ただし、全角マイナスは注意が必要な文字です。http://www.atmarkit.co.jp/fjava/rensai3/mojibake …の質問2を参照してください。
全角マイナスとは別に質問文にあるコードで気になったのはnew String(line.getBytes(),0,120)の部分です。
line.getBytes()した結果の先頭から120バイトだけを使ってnew String()していますが、それだと複数バイトで表される文字の途中でぶった切ってしまうおそれがあります。決まった文字数で切り揃えたいのであればline.substring(0, n)を使ったほうがいいのではないでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- Java java final 1 2022/06/10 22:49
- Java JavaのSingletonパターンのprivateの持つ意味が分かりません。 5 2022/06/12 10:38
- C言語・C++・C# 大量のデータを読み込んで表示する速度を改善したい 8 2023/05/07 13:29
- C言語・C++・C# C# で、あるフォルダー内にあるすべてのテキストファイルを別のフォルダーにコピーする。 4 2022/11/21 13:23
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- Ruby 【JAVA】数字をひし形に出力するプログラムについて 2 2022/07/11 23:32
- C言語・C++・C# C# DatagridviewにExcelシートを反映するとエラーが出る 2 2023/05/06 17:12
- Java Java プログラム public class Main { public static void 3 2023/08/10 23:46
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
InputStream.read()でタイムア...
-
equalsの逆
-
Windowsでの標準入力の終了の仕方
-
yyyymmddからyyyy/mm/d...
-
JAVAでエラーがでる。
-
テキストファイルから空白行をよむ
-
csv出力について
-
Servletでテキストボックスに入...
-
javaのfor文が機能してないみた...
-
Java int sum = 0は必要ですか?
-
テキストファイルにおいて任意...
-
Javaの質問です。テキストファ...
-
ProcessBuilderを使用して、対...
-
BufferedReaderでのエラー
-
FileクラスのcanRead/canWrite...
-
Web上に表示されたデータをcsv...
-
C言語のポインターに関する警告
-
ジャバスクリプトについて。
-
System.err. printlnとSystem.o...
-
1~100までの数字を表示し、か...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
yyyymmddからyyyy/mm/d...
-
csv出力について
-
equalsの逆
-
InputStream.read()でタイムア...
-
java連結
-
Javaでデータに登録する度にID...
-
ソケットを使ったサーバとクラ...
-
テキストファイルから空白行をよむ
-
JAVAでエラーがでる。
-
[JAVA]エラーが解決できません。
-
Java int sum = 0は必要ですか?
-
javaのfor文が機能してないみた...
-
Class.forNameでエラーになる
-
九九を横に表示する。
-
Inputstreamについて
-
Javaの質問です。テキストファ...
-
テキストファイルにおいて任意...
-
BufferedReaderでのエラー
-
Java FileDialog に関して
-
以下のJAVAプログラムでご質問...
おすすめ情報