把以下IP存入一个txt文件,编写程序把这些IP按数值大小,从小到达排序并打印出来。
61.54.231.245
61.54.231.9
61.54.231.246
61.54.231.48
61.53.231.249
1.[文件] Test6.java ~ 2KB 下载(1)
package com.itheima3;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Set;
import java.util.TreeMap;
/*
* 把以下IP存入一个txt文件,编写程序把这些IP按数值大小,从小到达排序并打印出来。
* 61.54.231.245
* 61.54.231.9
* 61.54.231.246
* 61.54.231.48
* 61.53.231.249
*
* */
public class Test6 {
public static void main(String[] args) throws IOException {
//创建高效字符输出流对象,将读到的数据存放到指定文件中
BufferedWriter bw = new BufferedWriter(new FileWriter("Test6.txt"));
//将数据写出到文件中
bw.write("61.54.231.245");
//每次写完一个数据换行
bw.newLine();
bw.write("61.54.231.9");
bw.newLine();
bw.write("61.54.231.246");
bw.newLine();
bw.write("61.54.231.48");
bw.newLine();
bw.write("61.53.231.249");
bw.close();
//创建高效字符输入流
BufferedReader br= new BufferedReader(new FileReader("Test6.txt"));
//创建一个双列集合存放数据
TreeMap map = new TreeMap();
String str;
//循环读取文件中的数据
while((str=br.readLine())!=null){
//如果读到的数据不为空,那么就将读到的数据以“.”进行切割,然后存放到一个字符串数组中
String[] split = str.split("\\.");
//将数组的每个元素转换成数字然后再将转换后的数字按照IP地址的进制依次乘以256,然后相加,最终得到一个数字类型的值
int parseInt = Integer.parseInt(split[0])*256*256*256
+ Integer.parseInt(split[1])*256*256
+ Integer.parseInt(split[2])*256
+ Integer.parseInt(split[3]);
//将得到的这个数值和原来的字符串以键值对应关系存放到集合中
map.put(parseInt, str);
}
//关流
br.close();
//将集合中所有键存放到一个set集合中
Set keySet = map.keySet();
//遍历集合,通过键获取值,并依次打印结果
for (Integer integer : keySet) {
System.out.println(map.get(integer));
}
}
}