学了这么久Java编程,头一回特么地用它干了件正事~~

gdx9125 2011-11-29 08:27:04
学院机房计算机IP地址采取静态IP-MAC绑定,这样做可以方便的管理网络资源,以及局域网内计算机对互联网访问权限的控制。
但是,麻烦的事情在于机房的计算机个数实在不是个小数,我们通过网络嗅探器收集到的MAC地址、IP地址、计算机名等等信息并不是能够直接使用的配置数据。例如:
这是我们收集到的数据样式:

……
B8:AC:6F:4A:93:1E=33G04|192.168.3.70
B8:AC:6F:48:CE:3B=33G05|192.168.3.71
B8:AC:6F:4A:96:D8=33G06|192.168.3.72
……


而我们需要的样式是这样的:
(配置到路由器里获得上网权限)

192.168.3.70 B8:AC:6F:4A:93:1E
192.168.3.71 B8:AC:6F:48:CE:3B
192.168.3.72 B8:AC:6F:4A:96:D8


或者是这样的样式:
(写入到ModiIP的配置文件MAC.ini中,实现自动更改计算机名称、IP地址、子网掩码等信息)

4487FC42F15E=192.168.4.63,34F10
4487FC42E909=192.168.4.64,34F11
4487FC42E711=192.168.4.65,34F12


这就需要我们进行数据样式的更改。如果这些数据仅仅只有几十条我们可以手工一条条更改,但是如果是有上百条的话就有些困难了。我以前曾重新收集过我所负责机房的IP-MAC信息,通过手工更改完后,可以说两只手都快废了。确实是件很痛苦的事情。
不过想想自己学习编程也有一段时间了,于是就尝试着用Java代码解决这些数据格式的问题。还好,学了这么久编程,今天头一回特么地用它干了件正事。

系统源代码:
package org.woniu;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;

public class ChangeModel {

public static void main(String[] args) throws Exception {
File file1 = new File("f:" + File.separator + "mac.txt");// 待读取数据源文件
File file2 = new File("f:" + File.separator + "ip.txt");// 待写入的数据文件
FileReader fr = new FileReader(file1);
FileWriter fw = new FileWriter(file2);
BufferedReader in = new BufferedReader(fr);
BufferedWriter out = new BufferedWriter(fw);
String str;
int m = 0;// 数据计数器
while ((str = in.readLine()) != null) {
// 对字符串进行截取,并存入数组
String[] s = str.split("=");
String[] s1 = s[1].split("\\|");
// 将数组内的值写入文件
out.write(s1[1] + " ");
out.write(s[0]);
out.newLine();
out.flush();
// 控制台同步打印数据
System.out.print(s1[1] + " ");
System.out.println(s[0]);
m++;
}
System.out.println("系统一共处理的数据行数是:" + m);
fr.close();
in.close();
fw.close();
out.close();
}
}

今天贴出来,目的是能够得到大家更好的建议。我知道,这只是最基本的Java代码,而且我一定会继续努力的,我非常喜欢Java,我会好好学习的。谢谢批评指正~~
...全文
7310 76 打赏 收藏 转发到动态 举报
写回复
用AI写文章
76 条回复
切换为时间正序
请发表友善的回复…
发表回复
九月 2011-12-05
  • 打赏
  • 举报
回复
百花齐放啊~~ 比较简单的说~~ 偏向与正则和脚本~~ Excel也不错~~ 用sql就有点大材小用了 主要是怎么方便怎么来~~~
cheniwantyou 2011-12-04
  • 打赏
  • 举报
回复
这不是很简单吗?简单得不得了,有什么意思
magic520369 2011-12-04
  • 打赏
  • 举报
回复
别把代码都写到主方法里,多写几个类,在主方法里调用就行,这样还能实现代码的重用,而且层次分明,更有可读性。我也是新手,意见仅供参考,如有什么不对,还请大家多多指教! 谢谢!
  • 打赏
  • 举报
回复
一个健壮的程序需要加上一些异常数据的控制,比如:

String[] s = str.split("=");
String[] s1 = s[1].split("\\|");

文件中有一行数据如果只是一个空行,或者是一行不正确的数据(其中没有“=”或者没有“|”)那这段程序还能继续跑么?
MarsYu 2011-12-02
  • 打赏
  • 举报
回复
直接用UE或editplus的替换功能就可以,替换时可以写正则表达式,这样更方便
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 trocp 的回复:]

我觉得这个记事本加excel就可以搞定。
[/Quote]
++
v-AUGUST-v 2011-12-01
  • 打赏
  • 举报
回复
我辈还得再接再厉啊!
xiaoyukid 2011-12-01
  • 打赏
  • 举报
回复
不错 不错 继续努力 lz..
M44346460 2011-12-01
  • 打赏
  • 举报
回复
额,挺好!
傅琦鸿 2011-12-01
  • 打赏
  • 举报
回复
木有很明白
Jobernowl 2011-12-01
  • 打赏
  • 举报
回复
嗯 楼主好好努力吧
BearKin 2011-12-01
  • 打赏
  • 举报
回复
...说实话 这种工作用脚本的话更容易一些.. 不过鼓励LZ 好好学习 天天向上
yao443jun 2011-12-01
  • 打赏
  • 举报
回复
佩服,楼主果然强大
济南大飞哥 2011-12-01
  • 打赏
  • 举报
回复
需求驱动开发
lost_guy_in_scut 2011-12-01
  • 打赏
  • 举报
回复
楼主加油吧。其实遇到日志文件的处理,还可以用下linux的命令,效率高很多的哦~
waylove7 2011-12-01
  • 打赏
  • 举报
回复
输入输出流掌握不错噢,哈哈
williamsong997 2011-12-01
  • 打赏
  • 举报
回复
楼主威武!
winsfan 2011-12-01
  • 打赏
  • 举报
回复
多学常练,错不了的
dh8827 2011-12-01
  • 打赏
  • 举报
回复
有木有啊!!!!那东西
潘勤启 2011-11-30
  • 打赏
  • 举报
回复
看了题目我还以为是你干了什么坏事呢
加载更多回复(48)

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧