if (arg0.getSource() == btnAdd) {
    String number = txtId.getText();
    System.out.println("number" + number);    s1 = new String(txtName.getText() + ";" + txtId.getText() + ";"
      + txtAge.getText() + ";" + txtSex.getText() + ";"
      + txtMobile.getText() + ";" + txtHomeAddress.getText()
      + ";");
    File file = new File("D:\\test.txt");
    if (number.trim().length() > 0) {
     try {
      FileInputStream fis = new FileInputStream(file);
      InputStreamReader isr = new InputStreamReader(fis);
      BufferedReader br = new BufferedReader(isr);      br.read();
      String s2 = br.toString();
      
      br.close();
      isr.close();
      fis.close();
      
      if (s2.contains(number)) {
       String warning = "该生信息已存在!";
       JOptionPane.showMessageDialog(null, warning, "警告",
         JOptionPane.WARNING_MESSAGE);
      } else {
       try {
        FileOutputStream fos = new FileOutputStream(
          file, true);
        OutputStreamWriter osw = new OutputStreamWriter(
          fos);
        BufferedWriter bw = new BufferedWriter(osw);        String m = "该生信息将被录入!";
        int ok = JOptionPane.showConfirmDialog(null, m,
          "确认", JOptionPane.YES_NO_OPTION,
          JOptionPane.INFORMATION_MESSAGE);
        if (ok == JOptionPane.YES_OPTION) {
         bw.write(s1);
         bw.newLine();
        }        bw.flush();
        bw.close();
        osw.close();
        fos.close();
       } catch (FileNotFoundException e1) {
        e1.printStackTrace();
       } catch (IOException e2) {
        e2.printStackTrace();
       }      }
      
     } catch (FileNotFoundException e1) {
      e1.printStackTrace();
     } catch (IOException e2) {
      e2.printStackTrace();
     }
    } else {
     String warning = "必须输入学号!";
     JOptionPane.showMessageDialog(null, warning, "警告",
       JOptionPane.WARNING_MESSAGE);    }   }
这是一个录入按钮 主要功能是输入学生信息 点击按钮将学生信息写入到TXT文件中!
写入TXT文件中要根据学号Id来判断: 
如果没有输入学号 则告警 "必须属于学号";
读取TXT文件中的内容,判断输入的学号在TXT文件中是否存在,存在的话 则告警"该生信息已存在!"
如果TXT文件中不存在输入的学号,则将此学生的信息写入到TXT文件中!
我单步调试的时候发现问题在于程序走 if (number.trim().length() > 0) 这句直接跳到了最后的else,if (number.trim().length() > 0){.. }里面的类容都没走到,请问这是什么原因? 

解决方案 »

  1.   

     System.out.println("number" + number); 输出内容了吗?
      

  2.   

    你的范围没卡好>0时 分几种情况
    <0时 分几种情况
     FileInputStream fis = new FileInputStream(file); 
          InputStreamReader isr = new InputStreamReader(fis); 
          BufferedReader br = new BufferedReader(isr); 和范围控制在一起的话有点乱,它毕竟和逻辑无关
      

  3.   

    你写的代码明显有问题。
    1.你的文档写入后,每一条学生记录是一行,可是你在写入前的读写只有一个br.read(),这是读取单个字符,你就是一个一个的字符从文件中读入,问题是你一个文件中难道只有一个学生或是只有一个字符吗?这里明显需要你用循环去读取文件中的每一行,用来查看是否已经有了学生的记录。我把你的代码重写了一下,不过,你给的Swing的界面代吗没有放出来,所以我直接把他改了一下用控制台的方式输出public static void main(String[] args) {
    String number = "003";
    if (number == null || "".equals(number.trim())) {
    System.out.println("学号必须录入");
    return;
    }
    System.out.println("number" + number); String s1 = new String(number + "AAAA");
    File file = new File("D:\\test.txt");
    if (number.trim().length() > 0) {
    try {
    FileInputStream fis = new FileInputStream(file);
    InputStreamReader isr = new InputStreamReader(fis);
    BufferedReader br = new BufferedReader(isr); String s2; while ((s2 = br.readLine()) != null) {
    System.out.println(s2);
    if (s2.lastIndexOf(number) > -1) {
    String warning = "该生信息已存在!";
    System.out.println(warning);
    return;
    }
    } br.close();
    isr.close();
    fis.close(); try {
    FileOutputStream fos = new FileOutputStream(file, true);
    OutputStreamWriter osw = new OutputStreamWriter(fos);
    BufferedWriter bw = new BufferedWriter(osw); String m = "该生信息将被录入!";
    System.out.println(m);
    bw.write(s1);
    bw.newLine(); bw.flush();
    bw.close();
    osw.close();
    fos.close();
    } catch (FileNotFoundException e1) {
    e1.printStackTrace();
    } catch (IOException e2) {
    e2.printStackTrace();
    } } catch (FileNotFoundException e1) {
    e1.printStackTrace();
    } catch (IOException e2) {
    e2.printStackTrace();
    } }
    }
      

  4.   

    上面的IO流我不记得关了,重新写了一下public static void main(String[] args) {
    String number = "003";
    if (number == null || "".equals(number.trim())) {
    System.out.println("学号必须录入");
    return;
    }
    System.out.println("number" + number); String s1 = new String(number + "AAAA");
    File file = new File("D:\\test.txt");
    if (number.trim().length() > 0) {
    FileInputStream fis = null;
    InputStreamReader isr = null;
    BufferedReader br = null;
    try {
    fis = new FileInputStream(file);
    isr = new InputStreamReader(fis);
    br = new BufferedReader(isr); String s2; while ((s2 = br.readLine()) != null) {
    System.out.println(s2);
    if (s2.lastIndexOf(number) > -1) {
    String warning = "该生信息已存在!";
    System.out.println(warning);
    return;
    }
    } FileOutputStream fos = null;
    OutputStreamWriter osw = null;
    BufferedWriter bw = null;
    try {
    fos = new FileOutputStream(file, true);
    osw = new OutputStreamWriter(fos);
    bw = new BufferedWriter(osw); String m = "该生信息将被录入!";
    System.out.println(m);
    bw.write(s1);
    bw.newLine();
    bw.flush(); } catch (FileNotFoundException e1) {
    e1.printStackTrace();
    } catch (IOException e2) {
    e2.printStackTrace();
    } finally {
    if (bw != null)
    bw.close();
    if (osw != null)
    osw.close();
    if (fos != null)
    fos.close();
    } } catch (FileNotFoundException e1) {
    e1.printStackTrace();
    } catch (IOException e2) {
    e2.printStackTrace();
    } finally { try {
    if (br != null)
    br.close();
    if (isr != null)
    isr.close();
    if (fis != null)
    fis.close();
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    } }
    }
      

  5.   

    UP  UP
    UP UP