2

Jframeを開くコードを書き、そこにあるバーコードをスキャンし、それを読み取って正しいファイルに移動し、cust_numberを検索してその行を読み取り、新しいファイルに書き込みます..2つの問題が発生しています助けてください!! ありがとう!!

これが私のコードです:

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextArea;


public class searchfile2 {

    /**
     * @param args
     */

    public static void delFileFromDir(String dirPath) {
        File dir = new File(dirPath);
        if(dir.listFiles() == null)
            return;
        for(File file: dir.listFiles())
        {
            if(!file.isDirectory())
                file.delete();
        }
    }


    public static void main(String[] args) throws IOException  {
        // TODO Auto-generated method stub

        final JFrame frame = new JFrame("Scan Here: ");
        JPanel panel = new JPanel();

        final JTextArea text = new JTextArea(20, 40);
        JButton button = new JButton("Enter");

        frame.add(panel);
        panel.add(text);
        panel.add(button);

        button.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {

                BufferedReader br = null;
                BufferedWriter bfAll = null;

                String scanner = (text.getText());
                //System.out.println(scanner);

                try {
                    for (String s : scanner.split("\n")) {
                        String[] actionID = s.split("\\|");
                        String cust_num  = actionID[0];
                        String date = actionID[1];
                        String type = actionID[2];
                        //System.out.println(cust_num + "     Type:     " + type);

                        if(type.equals("BW")){
                            //System.out.println(type);

                            File folderBW = new File("prod\\BW");
                            File[] BFFileBW = folderBW.listFiles();

                            String reprintbw = ("out\\" + "BWreprintrecord" + ".txt");
                            bfAll = new BufferedWriter(new FileWriter(reprintbw));


                            for (File file1 : BFFileBW) {
                                String strbw = file1.getName();
                                //System.out.println(strbw);


                                if((date.subSequence(0, 2)).equals(strbw.subSequence(0, 2)) && (date.substring(2, 4)).equals(strbw.subSequence(3, 5)) && (date.subSequence(4, 6)).equals(strbw.subSequence(8, 10))){
                                    System.out.println("hdssdjsshdghjsdghjsdghjsdghjsdgjhsd               " + strbw);

                                    File foldertotalcountlettersdate = new File("prod\\BW\\" + strbw);
                                    File[] listOfFilestotalcountlettersdate = foldertotalcountlettersdate.listFiles();

                                    String totalcountlettersdate;

                                    try{
                                        for (int itotalcountdate = 0; itotalcountdate < listOfFilestotalcountlettersdate.length; itotalcountdate++) {
                                            if (listOfFilestotalcountlettersdate[itotalcountdate].isFile()) {
                                                totalcountlettersdate = listOfFilestotalcountlettersdate[itotalcountdate].getAbsolutePath();
                                                System.out.println("File Name: " + totalcountlettersdate);

                                                br = new BufferedReader(new FileReader(totalcountlettersdate));
                                                String line;
                                                line = br.readLine();
                                                bfAll.write(line);
                                                bfAll.newLine();
                                                line = br.readLine();
                                                bfAll.write(line);bfAll.newLine();
                                                line = br.readLine();
                                                bfAll.write(line);bfAll.newLine();
                                                line = br.readLine();
                                                bfAll.write(line);bfAll.newLine();
                                                line = br.readLine();
                                                bfAll.write(line);bfAll.newLine();
                                                line = br.readLine();
                                                bfAll.write(line);bfAll.newLine();
                                                line = br.readLine();
                                                bfAll.write(line);bfAll.newLine();

                                                while ((line = br.readLine()) != null) {

                                                    String[] actionIDprod = line.split("\\|");
                                                    String typeprod  = actionIDprod[3];
                                                    String typeprodname  = actionIDprod[4];

                                                    if(typeprod.equals(cust_num)) {
                                                        line = br.readLine();
                                                        System.out.println(line);
                                                        System.out.println(cust_num + "-------" + typeprodname);
                                                    }
                                                }
                                                br.close();

                                            }
                                        }
                                    } catch(Exception e2) {
                                        e2.printStackTrace();
                                    }

                                }
                            }

                            bfAll.newLine();
                            bfAll.flush();
                            bfAll.close();
                        }

                    }

                } catch(Exception e1) {
                    e1.printStackTrace();
                }

                frame.dispose();
            }
            });
        frame.setSize(500, 400);
        frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

}

問題は、その行をファイルに書き込んでいる..

bfAll.write(line);

最後の1行を書き込むだけです..すべての行を1つのファイルに書き込む必要があります。置き換えだと思います!! 私を助けてください!!ありがとう!!

そしてJframeで!! 私はスキャンします:

027421940|072213|BW|
600295885|072113|BW|
600253827|072113|BW|
600295333885|072113|LETTERS|

ファイル内のすべての 027421940 cust_number を検索:: その行を読み取り、ファイルに書き込みます。わからないので教えてください!! よろしくお願いします!!

4

1 に答える 1

1

readline は現在のポインタを進めます。正しい行を見つけたら、次の行を読むのではなく、すでに持っている「行」の値を出力したいだけのようです。

于 2013-07-24T13:16:06.193 に答える