java
1package partThree; 2 3import java.io.File; 4import java.io.FileInputStream; 5import java.io.FileNotFoundException; 6import java.io.FileOutputStream; 7import java.io.IOException; 8import java.io.ObjectInputStream; 9import java.io.ObjectOutput; 10import java.io.ObjectOutputStream; 11 12public class Drill310 { 13 14 public static void main(String[] args) { 15 16 Employee2 emp = new Employee2("田中", 250000); 17 18 try { 19 20 boolean result; 21 String arg2 = args[1]; 22 23 if (args.length != 2) { 24 System.out.println("引数の指定が間違っています"); 25 System.exit(1); 26 } 27 28 File file = new File(args[0]); 29 30 OptionAnalysis opt = new OptionAnalysis(arg2); 31 32 result = opt.optCheck(); 33 34 if (result == false) { 35 System.out.println("オプションの指定が間違っています"); 36 37 opt.usage(); 38 39 System.exit(1); 40 } 41 42 if ((arg2.equals("/w") || arg2.equals("/W"))) { 43 44 ObjectOutput out = new ObjectOutputStream(new FileOutputStream(file)); 45 out.writeObject(emp); 46 47 out.flush(); 48 out.close(); 49 System.out.println(file); 50 System.out.println("インスタンスを保存しました"); 51 // bufferedReader.close(); 52 } else if (arg2.equals("/r") || arg2.equals("/R")) { 53 54 ObjectInputStream in = new ObjectInputStream(new FileInputStream(file)); 55 Employee2 empInput = (Employee2) in.readObject(); 56 57 empInput.show(); 58 System.out.println("インスタンスを読み出しました"); 59 60 in.close(); 61 62 } 63 64 } catch (FileNotFoundException e) { 65 e.printStackTrace(); 66 } catch (ClassNotFoundException e) { 67 68 } catch (IOException e) { 69 e.printStackTrace(); 70 } 71 } 72 73} 74
java
1 2package partThree; 3 4import java.io.Serializable; 5 6public class Employee2 implements Serializable { 7 8 private String name; 9 private int salary; 10 11 public void show() { 12 13 System.out.print("私の名前は、" + this.name + "です。"); 14 System.out.println("私の給与は、" + this.salary + "です。"); 15 16 } 17 18 public Employee2(String name, int salary) { 19 this.name = name; 20 this.salary = salary; 21 22 } 23 24} 25
java
1package partThree; 2 3public class OptionAnalysis { 4 5 private String opt; 6 private String write1 = "/w"; 7 private String write2 = "/W"; 8 private String read1 = "/r"; 9 private String read2 = "/R"; 10 11 public OptionAnalysis(String opt) { 12 13 this.opt = opt; 14 15 } 16 17 public boolean optCheck() { 18 19 boolean result; 20 21 if ((opt.equals(write1) || opt.equals(write2)) || (opt.equals(read1) || opt.equals(read2))) { 22 23 result = true; 24 25 } else { 26 27 result = false; 28 } 29 30 return result; 31 32 } 33 34 public void usage() { 35 36 System.out.println("オプションの指定"); 37 System.out.println("/wもしくは,/W =ファイル書き込み"); 38 System.out.println("/rもしくは,/R =ファイル読み込み"); 39 } 40 41} 42
Employee2 のオブジェクトの情報をファイルに書き込みたいと思っております。
現在、のコードだと書き込むと
ャ・ sr partThree.Employee2}K・笑コ゚ I salaryL namet Ljava/lang/String;xp ミ腎 逕ー荳ュ
となってしまいます。(windows10です)
書き込んだファイルを読みだしてみると
私の名前は、田中です。私の給与は、250000です。
インスタンスを読み出しました
と文字化けしません。
windows10のメモ帳で開いているのですが、色々文字コードを変えて開いてみましたが、文字化けが治りませんでした。
(ANSI,Unicode,UTF-8などを試してみました)
なかなか、原因が掴めなかったのでアドバイス頂けると助かります。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/10/16 04:28