- 締切済み
Java ファイルへの保存(書き込み)方法について
登録内容をCSVファイルへ保存する機能を実装したプログラムを作成したいんですが、作成方法が分かりません。 【実装させたい機能】 ・「1.登録」で会員情報を登録後、「3.保存」を実行する事でCSV形式のファイルへ保存(書込)させたい。 ・CSVファイルの中身は、「JAVA0001 , 鈴木一郎 , 1999/01/01 , 090-1111-1111」のようなカンマ区切りのCSV形式で会員情報が表示される。 【現在の状況】 ・デスクトップにKaiinフォルダを作成し、その中に「Kaiin.java」と「KaiinSystem.java」の2個ファイルを作成。(2ファイルは連動しています) ・コマンドプロンプトで、「KaiinSystem.java」のほうをコンパイル実行。 ・下記メニュー画面が表示されます。 --------------------------------------- ◆メニュー番号を選択してください。 1.登録 2.照会 3.保存 4.終了 ・メニュー番号 >> ----------------------------------------- ・メニュー番号に1を入力実行し会員を登録します。登録後は下記画面のようになります。 ----------------------------------- [会員番号]JAVA0001 [名前]鈴木一郎 [生年月日]1999/01/01 [電話番号]090-1111-1111 ----------------------------------- ・登録後、「5.保存」を実行すると、下記画面のエラーメッセージが表示されうまく保存(ファイルへ書込)ができません。 ---------------------------------------------------------------------- 会員情報を保存しました。 Exception in thread "main" java.lang.NullPointerException at kaiin.KaiinSystem.procSav(KaiinSystem.java:119) at kaiin.KaiinSystem.main(KaiinSystem.java:59) ---------------------------------------------------------------------- 【質問】 どのように修正を行えば、ファイルへ保存出来ますか?(登録情報が保存されますか?) コンパイル実行は可能で、5.保存を実行すると【現在の状況】で記載しましたエラーメッセージは表示されますが、一応CSVファイルは作成されます。(ただし中身は登録情報が保存されてなく空白状態です。) 下記に<KaiinSystem.java>のほうのソースコードを貼り付けましたので、教えて頂けると助かります。宜しくお願いします。 ※文字制限の為、ソースコードは保存とエラーが表示されている部分(59行目と119行目)のみ抜粋して貼り付けました。 <Kaiin.java>のほうのソースコードは下記リンク先のNo1の下の「この回答への補足」に貼り付けております。 http://okwave.jp/qa/q7868550.html ちなみに、「この回答へのお礼」に<KaiinSystem.java>も貼り付けられていますが、色々修正しており現在は全体的に全く違うソースコードになっています。<Kaiin.java>は現在と変わらないです。 <KaiinSystem.java> ----------------------------------------------------- ・・・ case MENU_SAV://保存処理 System.out.println("会員情報を保存しました。"); ks.procSav(); //←エラー(1)59行目 ・・・ //3.保存 private void procSav(){ try { PrintWriter writer = new PrintWriter(new BufferedWriter(new FileWriter("Kaiin.csv"))); int i = 0; writer.println(kinList.get(i).toCsvFormat()); //エラー(2)119行目 for (i = 0; i < kinList.size(); i++){ } writer.close(); } catch (IOException e) { System.out.println(e); } } ・・・
- javalike
- お礼率50% (3/6)
- Java
- 回答数1
- ありがとう数0
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- racene
- ベストアンサー率70% (21/30)
ぬるぽが出ているので、 kinList.get(0) がnullを返している可能性が高いです。 kinList自体がnullな可能性もありますが。 kinListが想定した通りになっているか確かめてみましょう。
関連するQ&A
- Java ファイルへの保存(書き込み)方法について
登録内容をCSVファイルへ保存する機能を実装したプログラムを作成したいんですが、作成方法が分かりません。 【実装させたい機能】 ・「1.登録」で会員情報を登録後、「3.保存」を実行する事でCSV形式のファイルへ保存(書込)させたい。 ・CSVファイルの中身は、「JAVA0001 , ○○○○ , 1999/01/01 , 090○○○○○○○○」のようなカンマ区切りのCSV形式で会員情報が表示される。 【現在の状況】 ・デスクトップにKaiinフォルダを作成し、その中に「Kaiin.java」と「KaiinSystem.java」の2個ファイルを作成。(2ファイルは連動しています) ・コマンドプロンプトで、「KaiinSystem.java」のほうをコンパイル実行。 ・下記メニュー画面が表示されます。 --------------------------------------- ◆メニュー番号を選択してください。 1.登録 2.照会 3.保存 4.終了 ・メニュー番号 >> ----------------------------------------- ・メニュー番号に1を入力実行し会員を登録します。登録後は下記画面のようになります。 ----------------------------------- [会員番号]JAVA0001 [名前]○○○○ [生年月日]1999/01/01 [電話番号]090○○○○○○○○ ----------------------------------- ・登録後、「3.保存」を実行すると、下記画面のエラーメッセージが表示されうまく保存(ファイルへ書込)ができません。 一応CSVファイルは作成されますが、中身を確認しても登録した会員情報が反映されてなく空白状態です。 ---------------------------------------------------------------------- 会員情報を保存しました。 Exception in thread "main" java.lang.NullPointerException at kaiin.KaiinSystem.procSav(KaiinSystem.java:119) at kaiin.KaiinSystem.main(KaiinSystem.java:59) ---------------------------------------------------------------------- 【質問】 <KaiinSystem.java>ソースコードをどのように修正を行えば、「3.保存」を実行した際に登録した会員情報が反映されたCSVファイルとして保存(書込)できますか?? 下記に<KaiinSystem.java>のほうのソースコードを貼り付けましたので、教えて頂けると助かります。 宜しくお願いします。 ※<KaiinSystem.java>のソースコードは文字数制限の関係上、「3.保存」と【現在の状況】に貼り付けたエラーメッセージ画面が指摘している部分(59・119行目)のみ抜粋して貼り付けました。 <Kaiin.java>のほうのソースコードにつきましては、自分の質問履歴の中の「会員情報登録プログラムの作成について」のリンク先を開いていただき、No.1の下の「この回答への補足」に貼り付けております。 また、同じくNo.1の下の「この回答へのお礼」に<KaiinSystem.java>のソースコードも貼り付けられておりますが、色々修正を行い現在は全体的に全く違うソースコードとなっております。 <Kaiin.java>は現在も同じソースコードです。 <KaiinSystem.java>ソースコード -------------------------------------------------------------------- ・・・ case MENU_SAV://保存処理 System.out.println("会員情報を保存しました。"); ks.procSav(); //エラー(1)59行目 break; ・・・ //3.保存 private void procSav(){ try { PrintWriter writer = new PrintWriter(new BufferedWriter(new FileWriter("Kaiin.csv"))); int i = 0; writer.println(kinList.get(i).toCsvFormat()); //エラー(2)119行目 for (i = 0; i < kinList.size(); i++){ } writer.close(); } catch (IOException e) { System.out.println(e); } } ・・・ --------------------------------------------------------------------
- 締切済み
- Java
- javaについて
以下のようにキーボードから入力していくプログラムを試行しているのですが、エラーが出てくるので行き詰まっています。 理想的にはキーボードに”あいう”エンター”えおか”エンターと打ち込んだら str[0]=あいう str[1]=えおか と表示させていきたいのですが、よろしくお願いします。 import java.io.*; import java.lang.*; import java.net.*; import java.awt.*; class gugu2 { public static void main(String[] args) throws IOException { int i=0; while(i<2){ System.out.println("キーワード入力"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String input = br.readLine(); char str[] = input.toCharArray(); System.out.println("キーワードは" + str[]); i=i+1; } for(i=0;i<2;i++){ System.out.println(str[]); } } } これがエラー表示です。 gugu2.java:17: '.class' がありません。 System.out.println("キーワードは" + str[]); ^ gugu2.java:21: '.class' がありません。 System.out.println(str[]); ^ エラー 2 個
- ベストアンサー
- Java
- javaのclassファイルが出来ません。
javaを独学で勉強しようと思い本を購入いたしました。 インストールしていざjavac ファイル名.javaで実行してもclassファイルが できません。何度も試してみたのですが(涙) 上記の様に実行してみたら、下記のようなエラーがでます。 エラーの内容が分かりません。 よろしくアドバイスお願い申し上げます。 Exception in thread "main"java long.NoclassDefFoundError; com/sun/tools/javac/main
- ベストアンサー
- Java
- javaの基本的な質問
下記を実行すると、上から順番にメソッドが実行され、 「Hello Java Hello Java」 と表示されるような気がしてしまうのですが… なぜ、一度しか表示されないのでしょうか。 class Main { public static void main(String[] args) { hello(); } public static void hello() { System.out.println("Hello Java"); } }
- ベストアンサー
- Java
- Javaのカウント方法について
お伺い致します。 CSVで取り込んだデータの抽出をしたいのですが、方法が見出せません。どの点を直せば宜しいのでしょうか。 具体的には取り込んだ郵便番号をカウントして(例:京都市,34)CSVファイルに出力するように出したいのですがカウントがうまくできません。(以下、コメントアウトしたものがありますが、今までのソースを記載します) 宜しく御願いします。 import java.io.FileReader; import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.IOException; import java.io.*; public class test01 { static String fname ="26KYOUTO.CSV"; public static void main(String[] args){ if(args.length>0) fname = args[0]; try { BufferedReader reader = new BufferedReader(new FileReader(fname)); BufferedWriter pw = new BufferedWriter(new PrintWriter("orig.txt")); String line = reader.readLine(); System.out.println(line); pw.println(""); int n = 0; int count = 0; _/* while(true) { String line = reader.readLine(); if(line.equals("26101")) break; count++; } */ reader.close(); System.out.println("京都府北区=" +count ); } catch(FileNotFoundException e) { System.out.println("ファイルがありません。"); } catch(IOException e) { System.out.println("入出力エラーです。"); } } }
- ベストアンサー
- Java
- 「得た値をCSV出力するJAVAプログラムを書きたい」
「得た値をCSV出力するJAVAプログラムを書きたい」 固定したある点とクリックした点の距離は取得できました つまり、クリックするごとに2点間の距離は変わります 例えば 1回目:10cm 2回目:20cm 3回目:5cm とします 流れはクリック→10cmという値を取得→クリック→20cmという値を取得→・・・ するとCSVファイルには10,20,5という風に出力されるようにJAVAプログラムを書きたいです 色々調べたんですが、読み込みの方法がいまいちわかりません(全体的なこともですが・・・) データベースを読み込むとかはよく見かけるのですが。 また、実行したら勝手にCSVファイルが出来るのか? 下記のプログラムまでは出来ました import java.io.*; public static void main( String args[] ) { try { PrintWriter pw = new PrintWriter( new BufferedWriter( new FileWriter( "output.csv" ) ) ); pw.println( "kyori" ); System.out.println( "ファイルに書き込みました。" ); pw.close(); } catch( IOException exp ) { System.out.println( "入出力エラーです。" ); } } 何かアドバイスをお願いします。
- 締切済み
- Java
- javaのプログラムの質問です。
10件まで登録できる簡易メモリストを作成して下さい 実行例: > java MemoList > コマンドを入力して下さい:list 1:俺達がガンダムだ! 2:ザクとは違うのだよザクとは! 3:当たらなければどうという事はない! コマンド list メモリストを1~の番号と共に表示 add メモを追加 del メモ番号を入力して削除 upd メモ番号を入力して上書き save ファイルに保存 h コマンド一覧を表示 q 終了 注意点 ・プログラム起動時にファイルからメモリストを読み込んで下さい ・保存するファイルは任意の固定ファイルで構いません ・メモは1~の連番で10件まで登録可能として下さい ・終了のコマンドが入力されるまで何度でもコマンド入力可能として下さい ・JavaDoc/プログラムコメントはしっかり記述して下さい ・エラー発生時は適切なメッセージを標準出力に出力して下さい という問題なのですが、以下のソースでとりあえずは動くのですが。 import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.IOException; import java.util.ArrayList; class MemoList{ /** * メインメソッド **/ public static void main(String[] args) throws IOException { // Fileクラスのインスタンス化 File file1 = new File("C:\\WORK\\Memo.txt"); // FileReaderクラスのインスタンス化 FileReader filereader = new FileReader(file1); // FileWriterクラスのインスタンス化 FileWriter filewriter = new FileWriter(file1); // BufferedReader&InputStreamReaderクラスのインスタンス化 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); ArrayList <String> arraylist = new ArrayList<String>(); int num = 1; // while文ループを行う while(true){ System.out.println("> コマンドを入力して下さい:"); String str1 = br.readLine(); if("list".equals(str1)){ for(int i=0; i < arraylist.size(); i++){ System.out.println(i + 1 + ":" + arraylist.get(i)); } } else if("add".equals(str1)){ System.out.println("> メモを入力して下さい。"); if(arraylist.size() == 10){ System.out.println("> 10件登録されています。追加する場合は削除して下さい。"); delete(br,arraylist); }else{ String str2 = br.readLine(); arraylist.add(str2); } }else if("del".equals(str1)){ delete(br,arraylist); }else if("upd".equals(str1)){ System.out.println("> 上書きするメモ番号を入力して下さい。"); try{ String str4 = br.readLine(); int num2 = Integer.parseInt(str4); System.out.println("> 上書きする内容を入力して下さい。"); String str5 = br.readLine(); arraylist.set(num2 - 1,str5); }catch(NumberFormatException e){ System.out.println("正しい番号を入力して下さい"); }catch(IndexOutOfBoundsException e){ System.out.println("正しい番号が入力されていないので上書き出来ません"); } (1)}else if("save".equals(str1)){ try{ for(int j=0; j < arraylist.size(); j++){ filewriter.write(arraylist.get(j) + "\r\n"); } System.out.println(">ファイルに保存しました。"); filewriter.close(); }catch(IOException e){ (2) System.out.println("ファイルに保存出来ません"); (3) } }else if("h".equals(str1)){ System.out.println("list:メモリストを1~の番号と共に表示"); System.out.println("add:メモを追加"); System.out.println("del:メモ番号を入力して削除"); System.out.println("upd:メモ番号を入力して上書き"); System.out.println("save:ファイルに保存"); }else if("q".equals(str1)){ System.out.println("> Terminated"); break; } } } // deleteメソッド public static void delete(BufferedReader br,ArrayList<String> arraylist) throws IOException { try{ System.out.println("削除するメモ番号を入力して下さい"); String str3 = br.readLine(); int num3 = Integer.parseInt(str3); arraylist.remove(num3 - 1); }catch(IndexOutOfBoundsException e){ System.out.println("正しい番号を入力して下さい"); }catch(NumberFormatException e){ System.out.println("正しい番号以外は受け付けません"); } } } 読みにくいのはご容赦ください。 (1)と(3)の間の処理なのですが、現在のソースで実行した場合、適当に「add」でメモを書き、最初に「save」コマンドを入力するとちゃんとWORKフォルダ内に作成した「Memo.txt」に保存されます。しかし、2回目以降、コマンドを入力して処理を行い、saveコマンド入力すると、例外処理となり(2)が表示され、以降はどのコマンド処理をしても(2)が表示され続けるという具合になってしまいます。どなたか教えていただけないでしょうか?よろしくお願い致します。 通報する
- ベストアンサー
- Java
- javaファイルをプロンプトから開きたいが・・
java初心者です。javaファイルをコマンドプロンプトから実行させてみたいのですが、上手くいきません。とりあえず、javaをインストールするところから教えていただけるとありがたいです。環境設定の方法などetc分からない所は多々ありますので。知識のある方、協力してください。
- ベストアンサー
- Java
- JAVAの学習で行き詰ってしまいました。
現在JAVAの学習を行っています。 課題で行き詰ったので質問をさせていただきます。 私が作成しようとしているプログラムは JAVA言語を使って指定したディレクトリ内に存在する ファイルやディレクトリを全てCSVファイルに出力するといったプログラムです import java.io.*; //指定したディレクトリ内に存在するファイルを表示するプログラム public class fileIn { public static void main(String args[]) throws IOException { InputStreamReader isr = new InputStreamReader(System.in); BufferedReader kbd = new BufferedReader(isr); String path; path = kbd.readLine(); File cdirectory = new File(path); //ディレクトリかファイルはを判定し、 //ディレクトリの場合、そのディレクトリの中身を確認 //ファイルの場合、ファイル名を表示 File filelist[] = cdirectory.listFiles(); for(int i =0; i<filelist.length;i++) { if(filelist[i].isDirectory()){ System.out.println("[ディレクトリ]" + filelist[i].getName()); }else if(filelist[i].isFile()){ System.out.println("[ファイル]" + filelist[i].getName()); }else{ System.out.println("不明ファイル" + filelist[i].getName()); } System.out.println(filelist[i]); } } } 現在ここまでは出来ているのですがif文でディレクトリかファイルか判定する所まで 出来上がりましたが、ディレクトリだった場合、そのディレクトリの中を見ることが 出来ません。どのようにしたら良いでしょう。CSVファイルに出力結果を書き込む 方法もわかりません。教えてください。
- ベストアンサー
- Java
- Java ファイルの保存名を予め表示したい
Java初心者です、よろしくお願いします 今Javaでプログラムを作っているんですが ファイル保存時にセーブファイルダイアログに予め 「読み込んだファイル名の拡張子を変えたファイル名」 を表示させるような事は出来ないのでしょうか? showOpenDialog()でsample.datを読み込ませて showSaveDialog()で保存するときにはsample.txtが表示されていて 後は保存ボタンを押すだけ……のような形にしたいのですが FileFilter型のどこかにそのようなメソッドがあるのでしょうか?
- ベストアンサー
- Java