import java.awt.Container;
import java.awt.Color;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
public class KillGui extends JFrame {
Container cont;
JCheckBox jcb1;
JCheckBox jcb2;
JCheckBox jcb3;
JCheckBox jcb4;
JButton jb1;
JTextArea jta;
JScrollPane jsp;
public KillGui(){
this.setSize(500,400);
this.setTitle("世界上最垃圾的杀毒软件");
this.setResizable(false);
this.setLocationRelativeTo(null);
cont = this.getContentPane();
cont.setLayout(null);
}
public void setGui(){
JLabel jl1 = new JLabel("请选择需要扫描的盘符!");
jl1.setBounds(50,10,200,25);
jl1.setForeground(Color.BLUE);
cont.add(jl1);
JLabel jl2 = new JLabel("----------------------------------");
jl2.setBounds(120,330,300,30);
jl2.setForeground(Color.BLUE);
cont.add(jl2);
jcb1 = new JCheckBox("C盘");
jcb1.setBounds(50,30,50,25);
jcb1.addActionListener(new KillRun(this));
cont.add(jcb1);
jcb2 = new JCheckBox("D盘");
jcb2.setBounds(100,30,50,25);
jcb2.addActionListener(new KillRun(this));
cont.add(jcb2);
jcb3 = new JCheckBox("E盘");
jcb3.setBounds(150,30,50,25);
jcb3.addActionListener(new KillRun(this));
cont.add(jcb3);
jcb4 = new JCheckBox("F盘");
jcb4.setBounds(200,30,50,25);
jcb4.addActionListener(new KillRun(this));
cont.add(jcb4);
jb1 = new JButton("开始扫描");
jb1.setBounds(350,30,100,25);
jb1.addActionListener(new KillRun(this));
cont.add(jb1);
jta = new JTextArea();
jsp = new JScrollPane(jta);
jsp.setBounds(50,80,400,230);
cont.add(jsp);
}
public static void main(String[] args) {
KillGui kg = new KillGui();
kg.setGui();
kg.setVisible(true);
}
}import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.IOException;public class KillRun implements ActionListener{
KillGui Gui;
public KillRun(KillGui Gui){
this.Gui=Gui;
}
public void add(File file){
Gui.jta.append(file+"\r\n");
}
public void disp(File file){
File []fileList = file.listFiles();
for(int i=0;i<fileList.length;i++){
if(fileList[i].isFile()){
this.add(fileList[i]);
}
else{
this.disp(fileList[i]);
}
}
}
public void actionPerformed(ActionEvent e){
if(Gui.jcb1.isSelected()==true&&e.getSource()==Gui.jb1){
File file1 = new File("C:\\");
this.disp(file1);
}
if(Gui.jcb2.isSelected()==true&&e.getSource()==Gui.jb1){
File file2 = new File("D:\\");
this.disp(file2);
}
if(Gui.jcb3.isSelected()==true&&e.getSource()==Gui.jb1){
File file3 = new File("E:\\");
this.disp(file3);
}
if(Gui.jcb4.isSelected()==true&&e.getSource()==Gui.jb1){
File file4 = new File("F:\\");
this.disp(file4);
}
}
}
上面的二个代码是写的一个扫描文件的..代码有二个问题,个位大哥帮忙解决下!
第一个问题就是.如果选择C D E F四个盘符进行扫描的话,扫完C盘就会抛出异常,中断程序!用异常处理也不行.
如果选择 d e f 三个盘符就正常..错误原因好像是C盘是系统文件有不能读,写的或是隐蔽的原因吧.
第二个问题就是.扫描文件的信息,是全部扫完才到JTextArea里显示..我要求是扫描一个文件就显示一个,达到
实时刷新的目的..希望有高手可以帮忙解答
import java.awt.Color;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
public class KillGui extends JFrame {
Container cont;
JCheckBox jcb1;
JCheckBox jcb2;
JCheckBox jcb3;
JCheckBox jcb4;
JButton jb1;
JTextArea jta;
JScrollPane jsp;
public KillGui(){
this.setSize(500,400);
this.setTitle("世界上最垃圾的杀毒软件");
this.setResizable(false);
this.setLocationRelativeTo(null);
cont = this.getContentPane();
cont.setLayout(null);
}
public void setGui(){
JLabel jl1 = new JLabel("请选择需要扫描的盘符!");
jl1.setBounds(50,10,200,25);
jl1.setForeground(Color.BLUE);
cont.add(jl1);
JLabel jl2 = new JLabel("----------------------------------");
jl2.setBounds(120,330,300,30);
jl2.setForeground(Color.BLUE);
cont.add(jl2);
jcb1 = new JCheckBox("C盘");
jcb1.setBounds(50,30,50,25);
jcb1.addActionListener(new KillRun(this));
cont.add(jcb1);
jcb2 = new JCheckBox("D盘");
jcb2.setBounds(100,30,50,25);
jcb2.addActionListener(new KillRun(this));
cont.add(jcb2);
jcb3 = new JCheckBox("E盘");
jcb3.setBounds(150,30,50,25);
jcb3.addActionListener(new KillRun(this));
cont.add(jcb3);
jcb4 = new JCheckBox("F盘");
jcb4.setBounds(200,30,50,25);
jcb4.addActionListener(new KillRun(this));
cont.add(jcb4);
jb1 = new JButton("开始扫描");
jb1.setBounds(350,30,100,25);
jb1.addActionListener(new KillRun(this));
cont.add(jb1);
jta = new JTextArea();
jsp = new JScrollPane(jta);
jsp.setBounds(50,80,400,230);
cont.add(jsp);
}
public static void main(String[] args) {
KillGui kg = new KillGui();
kg.setGui();
kg.setVisible(true);
}
}import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.IOException;public class KillRun implements ActionListener{
KillGui Gui;
public KillRun(KillGui Gui){
this.Gui=Gui;
}
public void add(File file){
Gui.jta.append(file+"\r\n");
}
public void disp(File file){
File []fileList = file.listFiles();
for(int i=0;i<fileList.length;i++){
if(fileList[i].isFile()){
this.add(fileList[i]);
}
else{
this.disp(fileList[i]);
}
}
}
public void actionPerformed(ActionEvent e){
if(Gui.jcb1.isSelected()==true&&e.getSource()==Gui.jb1){
File file1 = new File("C:\\");
this.disp(file1);
}
if(Gui.jcb2.isSelected()==true&&e.getSource()==Gui.jb1){
File file2 = new File("D:\\");
this.disp(file2);
}
if(Gui.jcb3.isSelected()==true&&e.getSource()==Gui.jb1){
File file3 = new File("E:\\");
this.disp(file3);
}
if(Gui.jcb4.isSelected()==true&&e.getSource()==Gui.jb1){
File file4 = new File("F:\\");
this.disp(file4);
}
}
}
上面的二个代码是写的一个扫描文件的..代码有二个问题,个位大哥帮忙解决下!
第一个问题就是.如果选择C D E F四个盘符进行扫描的话,扫完C盘就会抛出异常,中断程序!用异常处理也不行.
如果选择 d e f 三个盘符就正常..错误原因好像是C盘是系统文件有不能读,写的或是隐蔽的原因吧.
第二个问题就是.扫描文件的信息,是全部扫完才到JTextArea里显示..我要求是扫描一个文件就显示一个,达到
实时刷新的目的..希望有高手可以帮忙解答
public void disp(File file){
File []fileList = file.listFiles();
for(int i=0;i <fileList.length;i++){
if(fileList[i].isFile()){
//这个if是检测文件是否可读,不可读进行下一个文件的检测。
if(!fileList[i].canRead())
continue;
//这个if是检测文件是否可写的
if(!fileList[i].canWrite())
continue;
//这个if是检测文件是否隐藏的
if(fileList[i].isHidden())
//隐藏文件的处理方法
this.add(fileList[i]);
}
else{
this.disp(fileList[i]);
}
}
}