質問編集履歴

2 不正削除対応

teratail

teratail score 507

2018/02/13 10:48  投稿

JAVAJAVAJAVA
JAVAでCSVファイルの一部削除
JavaJAVAJAVAJAVAJAVAJAVAJAVAJAVA
### 実現したいこと
javaで
CSVファイルに保存されている社員情報を削除するシステムを作っています。
入力した社員番号の情報のみを削除したいのですが
今のソースコードですと全ての情報が削除されてしまうという問題が発生しました。
### 該当のソースコード
```java
import java.io.*;
import java.util.*;
public class syainsakujo{
 public static void main(String[] args){
   try{
   File csv = new File("syain2.csv");
   InputStreamReader isr = new InputStreamReader(System.in);
   BufferedReader brr = new BufferedReader(isr);
   BufferedReader br = new BufferedReader(new FileReader(csv));
   BufferedWriter bw = new BufferedWriter(new FileWriter(csv, true));
   PrintWriter bww = new PrintWriter(new BufferedWriter(new FileWriter("syain2.csv")));
   int bango[] = new int[1];
   int a = 0;
   System.out.println();
   System.out.println("----------");
   System.out.println("社員削除");
   System.out.println("----------");
   System.out.println();
   System.out.println("社員情報を削除します");
   System.out.println();
   System.out.println("削除する社員番号を入力してください");
   System.out.print("-->");
   bango[a] = Integer.parseInt(brr.readLine());
   String line = "";
   String str = null;
    while((line = br.readLine()) != null)
    {
     StringTokenizer st = new StringTokenizer(line,",");
     String bango2 = st.nextToken();
     int bango3 = Integer.parseInt(bango2);
     if(bango[a] == bango3){
       bww.println(line);
     }
   }
   br.close();
   bw.close();
    System.out.println("社員番号「" + bango[a] + "」の社員情報を削除しました");
    System.out.println();
    System.out.println("社員番号     社員名");
    System.out.println("-----      ------");
     while((line = br.readLine()) != null)
     {
      StringTokenizer st = new StringTokenizer(line,",");
      while(st.hasMoreTokens())
      {
       System.out.print(st.nextToken() + "      ");
       System.out.print("");
      }
       System.out.println();
     }
       br.close();
      }catch(Exception e){
       System.out.println(e);
     }
    }
  }
```
### こうなってほしいという結果
現時点でCSVファイルの内容が、
100001,さんま
100002,浜田
100003,松本
100004,今田
100005,岡村
100006,矢部
100007,東野
で、
例えば100002の情報を削除したいとして、
削除する社員番号を入力するときに、
100002を入力して結果(CSVを更新)が
100001,さんま
100003,松本
100004,今田
100005,岡村
100006,矢部
100007,東野
になるようにしたいです。
ご回答お願い致します。
  • Java

    20511 questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

1 JAVA

kojima_desuyo

kojima_desuyo score 8

2018/02/12 02:37  投稿

JAVAでCSVファイルの一部削除
JAVAJAVAJAVA
### 実現したいこと
javaで
CSVファイルに保存されている社員情報を削除するシステムを作っています。
入力した社員番号の情報のみを削除したいのですが
今のソースコードですと全ての情報が削除されてしまうという問題が発生しました。
### 該当のソースコード
```java
import java.io.*;
import java.util.*;
public class syainsakujo{
  public static void main(String[] args){
    try{
    File csv = new File("syain2.csv");
    InputStreamReader isr = new InputStreamReader(System.in);
    BufferedReader brr = new BufferedReader(isr);
    BufferedReader br = new BufferedReader(new FileReader(csv));
    BufferedWriter bw = new BufferedWriter(new FileWriter(csv, true));
    PrintWriter bww = new PrintWriter(new BufferedWriter(new FileWriter("syain2.csv")));
    int bango[] = new int[1];
    int a = 0;
    System.out.println();
    System.out.println("----------");
    System.out.println("社員削除");
    System.out.println("----------");
    System.out.println();
    System.out.println("社員情報を削除します");
    System.out.println();
    System.out.println("削除する社員番号を入力してください");
    System.out.print("-->");
    bango[a] = Integer.parseInt(brr.readLine());
    String line = "";
    String str = null;
     while((line = br.readLine()) != null)
     {
      StringTokenizer st = new StringTokenizer(line,",");
      String bango2 = st.nextToken();
      int bango3 = Integer.parseInt(bango2);
      if(bango[a] == bango3){
        bww.println(line);
      }
    }
    br.close();
    bw.close();
     System.out.println("社員番号「" + bango[a] + "」の社員情報を削除しました");
     System.out.println();
     System.out.println("社員番号     社員名");
     System.out.println("-----      ------");
      while((line = br.readLine()) != null)
      {
       StringTokenizer st = new StringTokenizer(line,",");
       while(st.hasMoreTokens())
       {
        System.out.print(st.nextToken() + "      ");
        System.out.print("");
       }
        System.out.println();
      }
        br.close();
       }catch(Exception e){
        System.out.println(e);
      }
     }
   }
```
### こうなってほしいという結果
現時点でCSVファイルの内容が、
100001,さんま
100002,浜田
100003,松本
100004,今田
100005,岡村
100006,矢部
100007,東野
で、
例えば100002の情報を削除したいとして、
削除する社員番号を入力するときに、
100002を入力して結果(CSVを更新)が
100001,さんま
100003,松本
100004,今田
100005,岡村
100006,矢部
100007,東野
になるようにしたいです。
ご回答お願い致します。
JavaJAVAJAVAJAVAJAVAJAVAJAVAJAVA
  • Java

    20511 questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

  • CSV

    1563 questions

    CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る