请教一个问题:::
根据条件搜索文件内容,例查找UserName,有没有好的方法查找,并把找查的结果保存。
麻烦大家提供一个思路````先谢了 思路好立马结帖,绝不失言

解决方案 »

  1.   

    简单的就是遍历文件夹
    然后打开每个文件
    在里面判断是否能找到这个关键字(所以dat文件一般是不会被找到的)
    关掉,继续下一个至于细节我现在只想到一点
    在读取第一行的时候,先判断
    然后把行末的keyword.length()-1个字符加到下一行的开头再判断
      

  2.   

    不好意思,可能说的不是很清楚```
    我要把文件内容读取到对象中```文件内容有一种特别格式如果文件内容格式变化时,我读出的内容就不准确,
     文本格式
    格式内容:yiart122|1234567|0|3|467f361a00000002||2007-06-25 11:34:34|9.080 
    文件分格为"|"
    如果我格式变化成这种:1234567|yiart122|0|3|467f361a00000002||2007-06-25 11:34:34|9.080 
    这样我就需要修改对象,使程序通用性很差````能不能在通过配置文件来更改```麻烦大家提供一个思路`````先谢了,思路好的立马结贴
      

  3.   

    先谢谢zdjray(PubSoft)
    就是觉的这样是程序降低了通用性 
     
        
      

  4.   

    可以使用文件输入流,一段一段的读,具体的方法是,比如读1K,在读的过程中,可能会把要查找的字符串给分割掉,因此,先判断读取的1K加上1K左右第一个|。
      

  5.   

    为什么不放到数据库中!!我们有个做法是做配置,把行数,列数,每列显示信息的意义都放到配置文件中,根据配置文件建立list或者别的什么,然后读文件,把内容放到建立的list中
      

  6.   

    bit1010(小虾风清扬)
    可以使用文件输入流,一段一段的读,具体的方法是,比如读1K,在读的过程中,可能会把要查找的字符串给分割掉,因此,先判断读取的1K加上1K左右第一个|。先谢了,现在用的就是这种方法,我的问题是:当改变文本格式的内容时,我建立的对象就需手动改变,通用性就降低了.....考虑是不是可以通过配置一个xml文件来生成对象,根据读xml的属性来确定文本格式的内容,,,不知道这种方法可行不?
      

  7.   

    kqw1981() ( 
    为什么不放到数据库中!!我们有个做法是做配置,把行数,列数,每列显示信息的意义都放到配置文件中,根据配置文件建立list或者别的什么,然后读文件,把内容放到建立的list中你这个思路挺好的`````能不能详细说说``
      

  8.   

    1.用输入输出流inputsteam来读,
    2.然后定义个数组,把数据流中的数据以字节形式存入数组,
    3.把字节数组转化为字符串,string=new String(array,”aa.txt“)
    4.这样就可以匹配查找了吗  if(string.charAt(i)==userName){}这样的思路lz可以考虑一下
      

  9.   

    上面忘了一步,字符串以“/”分隔,string=split(“/”),分隔以后也可以读入数组
      

  10.   

    不要使用对象,用Map<String.String>
    把key的顺序写在配置文件中,也就像是数据库中的字段名的顺序;读文件的时候,先读配置文件,读取信息的顺序,然后把value存入一个map对象。
    这样,在修改数据文件的格式的时候,只需要相应的修改一下配置文件中key的顺序就可以了。
      

  11.   

    kqw1981()的思路很好,值得学习一下
    为什么不放到数据库中!!我们有个做法是做配置,把行数,列数,每列显示信息的意义都放到配置文件中,根据配置文件建立list或者别的什么,然后读文件,把内容放到建立的list中
    ========================
      

  12.   

    用xml文件 把每个串yiart122|1234567|0|3|467f361a00000002||2007-06-25 11:34:34|9.08
    当做一个结点 结点下面的yiart122 ;1234567 这些 做为结点的属性来读
    想要更改格式的时候  无非在程序里增加删除属性而已
    root
      -node1
        -id yiart
        -password 1234567
        ...
      -node2
    ...
      

  13.   

    如何快速的按照特定要求找出所有文件呢?试试java.io.FileFilter 吧。 
    FileFilter 包含在Java Development Kit (JDK) 1.2 众多的附件中。它的主要作用就是检测文件是否存在。FileFilter 和它的前身FilenameFilter 的唯一不同是FileFilter 提供文件对象的访问方法,而FilenameFilter 是按照目录和文件名的方式来工作的。 例如,FileFilter 是这样的: 
    boolean accept(File file); 
    而FilenameFilter 却是以下的样子: 
    boolean accept(File directory, String name); 一个简单的例子是搜索特定的文件扩展名,你可以使用FilenameFilter ,但是出来的结果会让你很难判断到底是文件夹还是文件。要解决这个问题,你需要使用文件对象。也就是使用FileFilter吧。 以下是ExtensionFileFilter 的代码: 
    package com.generationjava.io.find; import java.io.File; 
    import java.io.FileFilter; public class ExtensionFileFilter implements FileFilter { private String extension; public ExtensionFileFilter(String extension) { 
    this.extension = extension; 
    } public boolean accept(File file) { 
    if(file.isDirectory( )) { 
    return false; 
    } String name = file.getName( ); 
    // find the last 
    int idx = name.lastIndexOf("."); 
    if(index == -1) { 
    return false; 
    } else 
    if(index == name.length( ) -1) { 
    return false; 
    } else { 
    return this.extension.equals(name.substring(index+1)); 



    以下的例子中用到了上述的ExtensionFileFilter 代码: 
    ... 
    String dir = "..."; // directory of your choice 
    File file = new File(dir); 
    File[] files = file.listFiles(new ExtensionFileFilter("cfg")); // files variable is now c:*.cfg if 'dir' is c: 
    // that is, all the files in the specified directory ending in *.cfg 
    ... 
    FileFilter 其实是从 javax.swing.filechooser.FileFilter派生出来的,javax.swing.filechooser.FileFilter 是使用JFileChoosers的抽象类。
      

  14.   

    shili150(我是狮子王) 
    1.用输入输出流inputsteam来读,
    2.然后定义个数组,把数据流中的数据以字节形式存入数组,
    3.把字节数组转化为字符串,string=new String(array,”aa.txt“)
    4.这样就可以匹配查找了吗  if(string.charAt(i)==userName){}先谢谢您了,这个方法已经在用````考虑的问题是```文件内容格式变化,通过改变配置文件的属性来生成对象.