欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > > 文章正文

I/O 简单文本文件读写改 对象 ArrayList保存文件的记录,文本文件arraylist

来源: javaer 分享于  点击 25020 次 点评:149

I/O 简单文本文件读写改 对象 ArrayList保存文件的记录,文本文件arraylist


建立一个类TextFile ,继承ArrayList 类

      哪么TextFile 拥有ArrayList public类成员数据和方法。

目的:1、用ArrayList对象保存从文本文件中读出的记录

         2、可以用ArrayList类里面的所有的方法对文件中记录进行修改,删除,非常方便

         3、修改后的文件内容存入另一个文本文件中。

**  对于 一整个大字符串,怎么分成一个个单个值,保存在数组中,我们可以利用正则表达式定分割的标准,

     现在默认是换行\n,或者是可以换成\\W+

     \\W+:表示分割符号可以不是(a--z A--z - 0--9),即分割符只要不含字母,数子,下划线,全部当成分割符号,

              这样分割符号是\n,逗号,空格等等 ,

**类里面的方法里this:编译器默认是ArrayList的 private transient Object[] elementData,

 elementData是private ,建立类TextFile对象时利用父类构造函数赋值elementData。

            for(String item : this)  //默认调用了 ArrayList iterator() 方法。

          out.println(item);

下面的类执行顺序:

        1、读出一个文件,放入到一个StringBuilder 中。

        2、把StringBuilder 中的内容 写入一个文本文件test.txt。

        3、建立类TextFile 的对象,ArrayList父类对象,

             读出test.txt的内容,并以数组得方式保存在ArrayList对象下的类成员elementData 中

         4、这样我们就可以随便用ArrayList类的方法对数据进行操作

         5、修改之后保存在另一个文本文件中。

package net.mindview.util;

import java.io.*;
import java.util.*;


public class TextFile extends ArrayList<String> {
  // Read a file as a single string:
  public static String read(String fileName) {
    StringBuilder sb = new StringBuilder();
    try {
      BufferedReader in= new BufferedReader(new FileReader(new File(fileName).getAbsoluteFile()));
      try {
        String s;
        while((s = in.readLine()) != null) {
          sb.append(s);
          sb.append("\n");
        }
      } finally {
        in.close();
      }
    } catch(IOException e) {
      throw new RuntimeException(e);
    }
    return sb.toString();
  }
  // Write a single file in one method call:
  public static void write(String fileName, String text) {
    try {
      PrintWriter out = new PrintWriter( new File(fileName).getAbsoluteFile());
      try {
        out.print(text);
      } finally {
        out.close();
      }
    } catch(IOException e) {
      throw new RuntimeException(e);
    }
  }
  // Read a file, split by any regular expression:

  public TextFile(String fileName, String splitter) {

    super(Arrays.asList(read(fileName).split(splitter)));
    // Regular expression split() often leaves an empty
    // String at the first position:
    if(get(0).equals("")) remove(0);
  }
  // Normally read by lines:
  public TextFile(String fileName) {
    this(fileName, "\n");
  }
  public void write(String fileName) {
    try {

      PrintWriter out = new PrintWriter(new File(fileName).getAbsoluteFile());
      try {       
        for(String item : this) 
          out.println(item);
      } finally {
        out.close();
      }
    } catch(IOException e) {
      throw new RuntimeException(e);
    }
  }
  // Simple test:
  public static void main(String[] args) {
 //系统默认是当前工程所在目录
    String file = read("src\\net\\mindview\\util\\TextFile.java");
    System.out.println("file:"+file);
    //写到当前工程目录,如果没有文件,则建立。
    write("test.txt", file);
    //从test.txt 读出来,放入数组中
    TextFile text = new TextFile("test.txt");
    //再写入文件2中
    text.write("test2.txt");
  }
}

相关文章

    暂无相关文章

用户点评