我有个文本文档,里面有很多行数据怎样读取指定行的数据还有怎样修改指定行的数据呢

解决方案 »

  1.   

      public static void main(String[] args) throws IOException {
        File file = new File("d:/55.txt");
        File file2 = new File("d:/55-new.txt");
        BufferedReader reader = new BufferedReader(new FileReader(file));
        PrintWriter writer = new PrintWriter(file2);
        int len = 2; // 修改第几行
        String toString = "TEST" + new Date(); // 修改的内容
        String line;
        while ((line = reader.readLine()) != null) {
          len--;
          if (len == 0) {
            writer.println(toString);
          } else {
            writer.println(line);
            writer.flush();
          }
        }
        reader.close();
        writer.close();
      }
      

  2.   

    ?同一个文件? 对不起,我想不通
    1 你读取第一行,比如20个字符,
    2 你修改了第一行,比如比第一行长,
    3 可是当你再次读取的时候,你会发现,你再次读到了第一行的内容。因为第23个字符是你刚才修改的那个!!
    如果你想读写,同时内容长度又可能变化的话,除了一次性把文件全部读取到内存,我想不出任何其它办法了。如果是10G的文件,你要用10G内存读吗?sorry,期待高手出现。另:我给的方法可以在最后采用
    1 删除原始文件
    2 更名新文件为原始文件名来解决
      

  3.   

    我要实现的功能是这样的比如 Apache 服务器的 httpd.confMYSQL 的my.ini里面有那么多数据他是怎样读取的呢
      

  4.   

    如果是 
    aaa = bbb这种格式,用import java.io.InputStream;
    import java.util.Properties;public class TestProperty {
      public String getPara(String fileName) {
        Properties prop = new Properties();
        try {
          InputStream is = getClass().getResourceAsStream(fileName);
          prop.load(is);
          if (is != null)
            is.close();
        } catch (Exception e) {
          System.out.println(e + "file " + fileName + " not found");
        }
        return prop.getProperty("file_name");
      }  public static void main(String[] args) {
        TestProperty test = new TestProperty();
        System.out.println(test.getPara("db.property"));
      }
    }
    db.property内容
    file_name=121212121.doc如果是复杂格式,比如 apache的虚拟主机的配置,就得自己解析了。