📄 readdata.java
字号:
import java.awt.Button;
import java.awt.Font;
import java.awt.Menu;
import java.awt.MenuBar;
import java.awt.MenuItem;
import java.awt.TextArea;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.LinkedList;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
public class ReadData
{
private JFrame f;
private MenuBar mb;
private Menu mSystem,mGuide,mHelp,mIntroduce;
private MenuItem mIDSIntroduce,mArithmetic,mExit,mFunction,mHowToUse,mAbout;
private Button mReadDataButton,mNextButton;
private TextArea mOutput;
private LinkedList stringlist = new LinkedList();
public String readFileName;
public static int number;
public static int noSameNumber = 0;
public static Data []dataArray = new Data[600000];
public ReadData() throws IOException
{
number =DealData.num;
readFileName =DealData.fileDestination;
f = new JFrame("入侵检测系统 谢松林 ");
mb = new MenuBar();
mSystem = new Menu("系统");
mGuide = new Menu("指南");
mHelp = new Menu("帮助");
mIntroduce = new Menu("简介");
mExit = new MenuItem("退出");
mIDSIntroduce = new MenuItem("IDS简介");
mArithmetic = new MenuItem("算法简介");
mFunction = new MenuItem("功能指南");
mHowToUse = new MenuItem("使用指南");
mAbout = new MenuItem("关于");
mExit.addActionListener(new MenuActionController());
mIDSIntroduce.addActionListener(new MenuActionController());
mArithmetic.addActionListener(new MenuActionController());
mFunction.addActionListener(new MenuActionController());
mHowToUse.addActionListener(new MenuActionController());
mHowToUse.addActionListener(new MenuActionController());
mAbout.addActionListener(new MenuActionController());
f.setLayout(null);
f.setMenuBar(mb);
mb.add(mSystem);
mb.add(mGuide);
//mb.setHelpMenu(mHelp);
mb.add(mHelp);
mSystem.add(mIntroduce);
mIntroduce.add(mIDSIntroduce);
mIntroduce.add(mArithmetic);
mSystem.add(mExit);
mSystem.addSeparator();
mGuide.add(mFunction);
mGuide.add(mHowToUse);
mGuide.addSeparator();
mHelp.add(mAbout);
mHelp.addSeparator();
mReadDataButton = new Button("读取数据");
mReadDataButton.setFont(new Font("Simsun",Font.PLAIN,20));
mReadDataButton.addActionListener(new MenuActionController());
mReadDataButton.setBounds(10,310,150,50);
f.add(mReadDataButton);
mNextButton = new Button("下一步");
mNextButton.setName("下一步");
mNextButton.setFont(new Font("Simsun",Font.PLAIN,20));
mNextButton.addActionListener(new MenuActionController());
mNextButton.setBounds(260,310,100,50);
f.add(mNextButton);
mOutput = new TextArea("相关信息输出区\n");
mOutput.setBounds(0,0,400,300);
f.add(mOutput);
f.setSize(400,450);
f.setLocation(200,200);
f.setVisible(true);
f.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(1);
}
});
}
public void Read() throws IOException
{
File file = new File(readFileName);
FileReader fr = new FileReader(file);
char c [] = new char[1];
int size = (int) file.length();
StringBuffer buffer = new StringBuffer();
char temp = '\n';
int j = 0;
for(int i = 0;i < size;i++)
{
int flag = fr.read(c);
if((c[0] == temp) || (flag == -1))
{
if(j == 0)
{
stringlist.add(buffer.toString());
dataArray[0] = new Data(buffer.toString());
noSameNumber++;
}
else
{
if(!stringlist.contains(buffer.toString()))
{
stringlist.add(buffer.toString());
dataArray[noSameNumber] = new Data(buffer.toString());
noSameNumber++;
}
}
buffer = new StringBuffer();
j++;
}
else
buffer.append(c[0]);
}
fr.close();
System.out.println("不一样的数据一共有"+noSameNumber+"条");
mOutput.append("不一样的数据一共有"+noSameNumber+"条");
int normalNumber = 0;
for(int i = 0;i < noSameNumber;i++)
{
if(dataArray[i].type.startsWith("normal"))
normalNumber++;
}
System.out.println("正常数据一共有"+normalNumber+"条\n");
mOutput.append("正常的数据一共有"+normalNumber+"条\n");
int attackNumber = noSameNumber - normalNumber;
System.out.println("不正常的数据一共有"+attackNumber+"条\n");
mOutput.append("不正常的数据一共有"+attackNumber+"条\n");
}
public boolean ExitInDataArray(Data []d,int m,Data newdata) //是否存在
{
boolean flag = true;
for(int i = 0;i < m;i++)
{
if((d[i].type).equals(newdata.type))
{
for(int j = 0;j < DealData.attribute;j++)
{
if(d[i].data[j] != newdata.data[j])
{
flag = false;
return flag;
}
}
}
}
return flag;
}
private class MenuActionController implements ActionListener
{
public MenuActionController()
{
}
public void actionPerformed(ActionEvent e)
{
String label = e.getActionCommand();
if (label.equals("IDS简介"))
{
IDSIntroduceFace iif = new IDSIntroduceFace();
}
else if (label.equals("算法简介"))
{
ArithmeticFace af = new ArithmeticFace();
}
else if (label.equals("退出"))
{
System.exit(1);
}
else if (label.equals("功能指南"))
{
FunctionFace ff = new FunctionFace();
}
else if (label.equals("使用指南"))
{
UseFace uf = new UseFace();
}
else if (label.equals("关于"))
{
AboutFace abf = new AboutFace();
}
else if (label.equals("读取数据"))
{
try {
Read();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
System.out.println("读取数据完毕!");
mOutput.append("读取数据完毕!");
}
else if(label.equals("下一步"))
{
System.out.println("开始对数据进行聚类");
mOutput.append("开始对数据进行聚类");
f.dispose();
DataClustering dc = new DataClustering();
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -