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 を検索:: その行を読み取り、ファイルに書き込みます。わからないので教えてください!! よろしくお願いします!!