我们先来看个例子
- import java.io.*;
- /**
- * Created by liguoqing on 2016/3/28.
- */
- public class ReadTxtFile {
- public static void readTxt(String filePath) {
- try {
- File file = new File(filePath);
- if(file.isFile() && file.exists()) {
- InputStreamReader isr = new InputStreamReader(new FileInputStream(file), "utf-8");
- BufferedReader br = new BufferedReader(isr);
- String lineTxt = null;
- while ((lineTxt = br.readLine()) != null) {
- System.out.println(lineTxt);
- }
- br.close();
- } else {
- System.out.println("文件不存在!");
- }
- } catch (Exception e) {
- System.out.println("文件读取错误!");
- }
- }
- public static void main(String[] args) {
- String filePath = "D:\\test\\我.txt";
- readTxt(filePath);
- }
- }
看完上面的例子,我们再来详细研究下
java读取txt文件内容。可以作如下理解:
首先获得一个文件句柄。File file = new File(); file即为文件句柄。两人之间连通电话网络了。接下来可以开始打电话了。
通过这条线路读取甲方的信息:new FileInputStream(file) 目前这个信息已经读进来内存当中了。接下来需要解读成乙方可以理解的东西
既然你使用了FileInputStream()。那么对应的需要使用InputStreamReader()这个方法进行解读刚才装进来内存当中的数据
解读完成后要输出呀。那当然要转换成IO可以识别的数据呀。那就需要调用字节码读取的方法BufferedReader()。同时使用bufferedReader()的readline()方法读取txt文件中的每一行数据哈。
- package com.campu;
- import java.io.BufferedInputStream;
- import java.io.BufferedReader;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.InputStreamReader;
- import java.io.Reader;
- /**
- * @author 码农小江
- * H20121012.java
- * 2012-10-12下午11:40:21
- */
- public class H20121012 {
- /**
- * 功能:Java读取txt文件的内容
- * 步骤:1:先获得文件句柄
- * 2:获得文件句柄当做是输入一个字节码流,需要对这个输入流进行读取
- * 3:读取到输入流后,需要读取生成字节流
- * 4:一行一行的输出。readline()。
- * 备注:需要考虑的是异常情况
- * @param filePath
- */
- public static void readTxtFile(String filePath){
- try {
- String encoding="GBK";
- File file=new File(filePath);
- if(file.isFile() && file.exists()){ //判断文件是否存在
- InputStreamReader read = new InputStreamReader(
- new FileInputStream(file),encoding);//考虑到编码格式
- BufferedReader bufferedReader = new BufferedReader(read);
- String lineTxt = null;
- while((lineTxt = bufferedReader.readLine()) != null){
- System.out.println(lineTxt);
- }
- read.close();
- }else{
- System.out.println("找不到指定的文件");
- }
- } catch (Exception e) {
- System.out.println("读取文件内容出错");
- e.printStackTrace();
- }
- }
- public static void main(String argv[]){
- String filePath = "L:\\Apache\\htdocs\\res\\20121012.txt";
- // "res/";
- readTxtFile(filePath);
- }
- }
--------------------------------------------------------------------
运用spring MVC
/** * 读取TXT文本内容 * @param file */ public static List<String> readTxtUtil(MultipartFile file) { List<String> list=Lists.newArrayList(); try { //InputStreamReader isr = new InputStreamReader(new FileInputStream(file), "utf-8"); //处理文件的字符集,得到文件的字符集 CodepageDetectorProxy detector = CodepageDetectorProxy.getInstance(); detector.add(new ParsingDetector(false)); detector.add(JChardetFacade.getInstance()); detector.add(ASCIIDetector.getInstance()); detector.add(UnicodeDetector.getInstance()); Charset charset = null; try { //charset = detector.detectCodepage(file.toURI().toURL()); InputStream is = new BufferedInputStream(file.getInputStream()); charset = detector.detectCodepage(is, 8); } catch (Exception e) { e.printStackTrace(); throw e; } InputStreamReader isr = new InputStreamReader(file.getInputStream(), charset.name()); // InputStreamReader isr = new InputStreamReader(file.getInputStream(), "utf-8"); BufferedReader br = new BufferedReader(isr); String lineTxt = null; while ((lineTxt = br.readLine()) != null) { //System.out.println(lineTxt); list.add(lineTxt); } br.close(); } catch (Exception e) { System.out.println("文件读取错误!"); } return list; }