Java代码,在文件中搜索数字并读取行

k5ifujac  于 2023-01-19  发布在  Java
关注(0)|答案(1)|浏览(107)

写代码打开Jframe,扫描条形码在那里,读取并进入正确的文件,搜索客户编号,读取该行并写入新文件...我得到两个问题,请帮助我!!谢谢!!
下面是我的代码:

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);

它只写了最后一行。。我需要把所有的行写在一个文件里,我想它的替换!!请帮帮我!!谢谢!!
在Jframe中!!我扫描的是:

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

在文件中搜索所有027421940客户编号::读取行写入文件..但是,它只写入文件中的一行..我认为它的替换这就是原因!!

gxwragnw

gxwragnw1#

readline前进当前指针。一旦你找到了正确的行,看起来你只想打印出你已经有了的“line”的值,而不是读下一行。

相关问题