Java 读取 txt 文件内容到容器 List

方法一:

一、桌面上准备 DataObject.txt 文件,内容为:

     

 

二、打开 Eclipse,编写代码如下:     

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.List;
import javax.swing.filechooser.FileSystemView;

public class test003 {
  public static void main(String[] args) {
    FileSystemView fsv = FileSystemView.getFileSystemView();
    File com = fsv.getHomeDirectory();
    String deskPath = com.getPath();
    String filePath = deskPath + "\\" +  "DataObject.txt";
    	
    List<String> list = new ArrayList<String>();
    try {
      list = getFileContext( filePath );
      for( int i = 0; i < list.size(); i++ ) {
        String lineStr = list.get(i);
        System.out.println( "lineStr = " + lineStr );
      }
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
	
  /**
   * 获取txt文件内容, 并按行放入list中
   */
  public static List<String> getFileContext( String path ) {
    FileReader fileReader = null;
    BufferedReader bufferedReader = null;
    List<String> list = new ArrayList<String>();
    String str = "";
    try {
      fileReader = new FileReader( path );
      bufferedReader = new BufferedReader( fileReader );
      while( (str = bufferedReader.readLine()) != null ) {
        if( str.trim().length() > 2 ) {
          list.add( str );
        }
      }
    } catch ( Exception e ) {
      e.printStackTrace();
    } finally {
      try {
        if (bufferedReader != null) {
          bufferedReader.close();
        } 
      } catch (Exception e2) {
        e2.printStackTrace();
      }
        	
      try {
        if (fileReader != null) {
          fileReader.close();
        }
      } catch (Exception e2) {
        e2.printStackTrace();
      }
    }
    return list;
  }
}

 

三、执行结果为:

 


 

方法二:

一、桌面上准备 DataObject.txt 文件,内容为:

     

 

二、打开 Eclipse,编写代码如下:     

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.List;
import javax.swing.filechooser.FileSystemView;

public class test003 {
  public static void main(String[] args) {
    FileSystemView fsv = FileSystemView.getFileSystemView();
    File com = fsv.getHomeDirectory();
    String deskPath = com.getPath();
    String filePath = deskPath + "\\" +  "DataObject.txt";
    	
    List<String> list = new ArrayList<String>();
    try {
      list = readFileToList( filePath );
      for( int i = 0; i < list.size(); i++ ) {
        String lineStr = list.get(i);
        System.out.println( "lineStr = " + lineStr );
      }
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
	
  /**
   * 读取文件内容到容器List
   * @param fileName 文件名称
   */
  public static List<String> readFileToList( String fileName ) {
    List<String> list = new ArrayList<String>();
    BufferedReader br = null;
    try {
      String line = null;
      br = new BufferedReader( new UnicodeReader( new FileInputStream(fileName), Charset.defaultCharset().name()) );
      while ( (line = br.readLine()) != null ) {
        list.add(line);
      }
    } catch ( IOException e ) {
      e.printStackTrace();
    } finally {
      try {
        if (null != br) {
          br.close();
        } 
      } catch (Exception e2) {
        e2.printStackTrace();
      }
    }
		
    return list;
  }
}

 

UnicodeReader 类:

import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PushbackInputStream;
import java.io.Reader;

public class UnicodeReader extends Reader {
	  PushbackInputStream internalIn;
	  InputStreamReader   internalIn2 = null;
	  String              defaultEnc;
	 
	  private static final int BOM_SIZE = 4;
	  
	  public UnicodeReader(InputStream in, String defaultEnc) {
	     internalIn = new PushbackInputStream(in, BOM_SIZE);
	     this.defaultEnc = defaultEnc;
	  }
	 
	  public String getDefaultEncoding() {
	     return defaultEnc;
	  }
	  
	  public String getEncoding() {
	     if (internalIn2 == null) return null;
	     return internalIn2.getEncoding();
	  }
	  
	  protected void init() throws IOException {
	     if (internalIn2 != null) return;
	 
	     String encoding;
	     byte bom[] = new byte[BOM_SIZE];
	     int n, unread;
	     n = internalIn.read(bom, 0, bom.length);
	 
	     if ( (bom[0] == (byte)0x00) && (bom[1] == (byte)0x00) &&
	                 (bom[2] == (byte)0xFE) && (bom[3] == (byte)0xFF) ) {
	        encoding = "UTF-32BE";
	        unread = n - 4;
	     } else if ( (bom[0] == (byte)0xFF) && (bom[1] == (byte)0xFE) &&
	                 (bom[2] == (byte)0x00) && (bom[3] == (byte)0x00) ) {
	        encoding = "UTF-32LE";
	        unread = n - 4;
	     } else if (  (bom[0] == (byte)0xEF) && (bom[1] == (byte)0xBB) &&
	           (bom[2] == (byte)0xBF) ) {
	        encoding = "UTF-8";
	        unread = n - 3;
	     } else if ( (bom[0] == (byte)0xFE) && (bom[1] == (byte)0xFF) ) {
	        encoding = "UTF-16BE";
	        unread = n - 2;
	     } else if ( (bom[0] == (byte)0xFF) && (bom[1] == (byte)0xFE) ) {
	        encoding = "UTF-16LE";
	        unread = n - 2;
	     } else {
	        encoding = defaultEnc;
	        unread = n;
	     }    
	 
	     if (unread > 0) internalIn.unread(bom, (n - unread), unread);
	 
	     if (encoding == null) {
	        internalIn2 = new InputStreamReader(internalIn);
	     } else {
	        internalIn2 = new InputStreamReader(internalIn, encoding);
	     }
	  }
	 
	  public void close() throws IOException {
	     init();
	     internalIn2.close();
	  }
	 
	  public int read(char[] cbuf, int off, int len) throws IOException {
	     init();
	     return internalIn2.read(cbuf, off, len);
	  }
	}

 

三、执行结果为:

 

转载于:https://www.cnblogs.com/dgm2088/p/9894567.html

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值