当前位置: 代码迷 >> Java相关 >> java读取txt指定的内容解决思路
  详细解决方案

java读取txt指定的内容解决思路

热度:83   发布时间:2016-04-22 20:55:49.0
java读取txt指定的内容
本帖最后由 ljf0928 于 2014-10-23 16:35:21 编辑
我需要用java读取一份txt文件内容
txt内容是这样的:
null
host=117.34.101.172
title=西安电信[117.34.101.172]
menu=西安电信
+++ XianCT

host=118.121.252.146
title=内江电信[118.121.252.146]
menu=内江电信
+++ NeijaingCT

host=122.228.80.83
title=温州电信十分局[122.228.80.83]
menu=温州电信十分局
+++WenzhouCT

host=122.228.213.110
title=乐清电信[122.228.213.110]
menu=乐清电信1
+++ YueqingCT1

host=122.228.215.13
title=乐清电信[122.228.215.13]
menu=乐清电信
+++ YueqingCT

host=171.111.154.124
title=南宁电信[171.111.154.124]
menu=南宁电信
+++ NanningCT

host=122.225.81.118
title=嘉兴电信[122.225.81.118]
menu=嘉兴电信
+++ JiaxingCT

host=117.27.153.133
title=福州电信[117.27.153.133]
menu=福州电信
+++ FuzhouCT


host=125.64.99.94
title=德阳电信[125.64.99.94]
menu=德阳电信
+++ DeyangCT

host=182.140.239.67
title=成都电信[182.140.239.67]
menu=成都电信
+++ ChenduCT

host=221.229.163.131
title=徐州电信[221.229.163.131]
menu=徐州电信
+++ XuzhouCT

host=117.25.150.242
title=厦门电信[117.25.150.242]
menu=厦门电信
+++ XiamengCT


host=122.226.184.163
title=台州电信[122.226.184.163]
menu=台州电信
+++ TaizhouCT


host=61.155.209.162
title=苏州电信[61.155.209.162]
menu=苏州电信
+++ SuzhouCT

host=115.231.98.83
title=萧山电信[115.231.98.83]
menu=萧山电信
+++ XiaoshanCT1

host=115.231.98.70
title=杭州电信[115.231.98.70]
menu=杭州电信
+++ XiaoshanCT

host=36.48.159.21
title=长春电信[36.48.159.21]
menu=长春电信
+++ ChangchunCT

host=103.20.248.21
title=上海呼兰BGP[103.20.248.21]
menu=上海呼兰BGP
+++ShanghaiBGP

host=114.112.48.155
title=北京兆维BGP[114.112.48.155]
menu=北京兆维BGP
+++ BeijinZW

host=103.249.128.3
title=北京南苑BGP[103.249.128.3]
menu=北京南苑BGP
+++ BeijinNY

title=私有IDC电信节点
menu=私有IDC电信节点
++ IDC_CT
我想要读取host和他下面的tile,menu,+++ ,的数据 每个host组成一条数据 需要怎摸去读 最好能把代码也贴出来  求帮助啊啊 大神们 在线等待啊
------解决思路----------------------
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * Created by Administrator on 14-10-23.
 */
public class TextReader {
    public static List<Map<String,String>> readTxtFile(String filePath){
        List<Map<String,String>> list = new ArrayList<Map<String,String>>();
        try {
            String encoding="UTF-8";
            File file=new File(filePath);
            if(file.isFile() && file.exists()){ //判断文件是否存在
                InputStreamReader read = new InputStreamReader(
                        new FileInputStream(file),encoding);//考虑到编码格式
                BufferedReader bufferedReader = new BufferedReader(read);
                String lineTxt = null;
                List<String> hostList = new ArrayList<String>();
                List<String> titleList = new ArrayList<String>();
                List<String> menuList = new ArrayList<String>();
                List<String> plusList = new ArrayList<String>();
                while((lineTxt = bufferedReader.readLine()) != null){
                    if(lineTxt.startsWith("host")){
                        hostList.add(lineTxt.split("=")[1]);
                    }
                    if(lineTxt.startsWith("title")){
                        titleList.add(lineTxt.split("=")[1]);
                    }
                    if(lineTxt.startsWith("menu")){
                        menuList.add(lineTxt.split("=")[1]);
                    }
                    if(lineTxt.startsWith("+++")){
                        plusList.add(lineTxt.substring(3).trim());
                    }
                }
                for(int i=0;i<hostList.size();i++){
                    String host = hostList.get(i);
                    String title=titleList.get(i);
                    String menu = menuList.get(i);
                    String plus = plusList.get(i);
                    Map<String,String> map = new HashMap<String, String>();
                    map.put("host",host);
                    map.put("title",title);
                    map.put("menu",menu);
                    map.put("+++",plus);
                    list.add(map);
                }

                read.close();
            }else{
                System.out.println("找不到指定的文件");
            }
        } catch (Exception e) {
            System.out.println("读取文件内容出错");
            e.printStackTrace();
        }
        return list;
    }

    public static void main(String[] args){
        String filePath="F:\\host.txt";
        List<Map<String,String>> list=readTxtFile(filePath);
        for(int i=0;i<list.size();i++){
            Map<String,String> map = list.get(i);
            System.out.println(map);
        }
    }
}

简单的写下了下,可能代码不够严谨,表达个思路
------解决思路----------------------
供参考

package Lesson8;
import java.io.*;
import java.util.*;
public class Demo2 {
public static void main(String[] args) {
try {
FileReader fr=new FileReader(new File("D:\\host.txt"));
BufferedReader br=new BufferedReader(fr);
String strTemp=null;
List<HostInfo> hiList=new ArrayList<HostInfo>();
HostInfo hostInfo=null;
while((strTemp=br.readLine())!=null)
{
if(strTemp.indexOf("host=")!=-1)
{
hostInfo=new HostInfo();
hostInfo.setStrHost(strTemp.substring(strTemp.indexOf("host=")+"host=".length()));
}
if(strTemp.indexOf("title=")!=-1)
{
hostInfo.setStrTitle(strTemp.substring(strTemp.indexOf("title=")+"title=".length()));
}
if(strTemp.indexOf("menu=")!=-1)
{
hostInfo.setStrMenu(strTemp.substring(strTemp.indexOf("menu=")+"menu=".length()));
}
if(strTemp.indexOf("+++")!=-1)
{
hostInfo.setStrPlus(strTemp.substring(strTemp.indexOf("+++")+"+++".length()));
hiList.add(hostInfo);
}
}
br.close();
for(HostInfo hi:hiList)//打印输出
{
System.out.println(hi);
}

} catch (IOException e) {
e.printStackTrace();
}
}
}

class HostInfo
{

private String strHost;
private String strTitle;
private String strMenu;
private String strPlus;//保存+++信息

public String getStrHost() {
return strHost;
}
public void setStrHost(String strHost) {
this.strHost = strHost;
}
public String getStrTitle() {
return strTitle;
}
public void setStrTitle(String title) {
this.strTitle = title;
}
public String getStrMenu() {
return strMenu;
}
public void setStrMenu(String strMenu) {
this.strMenu = strMenu;
}
public String getStrPlus() {
return strPlus;
}
public void setStrPlus(String strPlus) {
this.strPlus = strPlus;
}

@Override
public String toString() {
return "HostInfo [strHost=" + strHost + ", strTitle=" + strTitle
+ ", strMenu=" + strMenu + ", strPlus=" + strPlus
+ "]";
}
}

文件:

结果:
  相关解决方案