日期:2014-05-20  浏览次数:20822 次

JAVA 文件解析--讨论散分
一个文件大致格式如下 
文件名:abcdefg 
   
 13341 英语 english
 13345 汉语 chinese
 13346 西班牙语 span
  .
  .
  .
 99999 火星语 sosese 
   
  要用java读取这个abcdefg文件,并一行一行的按照 空格 分割解析成一个数组(每一行一个数组):  
  比如数组1 str1[] 表示第一行 他的str1[0]=13341 ,str1[1]=英语 str1[2]=english

比较简单,但请考虑效率…

------解决方案--------------------
改用XML文件吧.

还好解悉,还清楚.
------解决方案--------------------
基本的算法楼主都给出来,

但不知道如何考虑效率,
------解决方案--------------------
关注下
------解决方案--------------------
建议用xml,后者数据绑定;

要不就只能按照楼主的一行一行来了!
------解决方案--------------------
使用NIO包中的文件映射吧,读出一行之后split,就可以得到楼主需要的东西了。JUST SIMPLE.
------解决方案--------------------
最后要得到什么结果,两维数组还是嵌套的list
------解决方案--------------------
Java code

    public static HashMap<String, String[]> readFile(String path)
    {
        HashMap<String, String[]> map = new HashMap<String, String[]>();
        String[] array;
        FileReader fr = null;
        BufferedReader br = null;

        try
        {
            fr = new FileReader(path);
            br = new BufferedReader(fr);
            String str;

            while((str = br.readLine()) != null)
            {
                array = str.split(" ");
                map.put(array[0], array);
            }
        }
        catch(IOException e)
        {
            e.printStackTrace();
        }
        finally
        {
            try
            {
                if(fr != null)
                {
                    fr.close();
                }
                
                if(br != null)
                {
                    br.close();
                }
            }
            catch(IOException e)
            {
                e.printStackTrace();
            }
        }
        
        return map;
    }

------解决方案--------------------
Java code

public List<String[]> getList(){
  List<String[]> list = new ArrayList<String[]>;
  File file = new File("abcdedg");
  FileReader fileReader = new FileReader(file);
  BufferedReader reader = new BufferedReader(fileReader);
  String line = null;
  while((line=reader.readLine())!=null){
    String[] s = line.split(" ");  
    list.add(s); 
  }
  reader.close();
  return list;
}

------解决方案--------------------
要知道哪种方式效率最高,可能要写程序比较一下才知道
感觉读数据并组成数组就是那几种方式,没有特别效率高的

------解决方案--------------------
我也写过一个类似的,用IO实现,效率怎样没测过,
可是想用xml实现,该怎么做,
哪位有代码,可否分享一下(xml)
------解决方案--------------------
使用NIO包中的文件映射吧!
------解决方案--------------------
写xml里有jdom或者dom4j解析简单~
------解决方案--------------------
正则表达式
------解决方案--------------------
正则表达式行吗

------解决方案--------------------
关注
学习
收藏
帮顶
不懂
接分
------解决方案--------------------