博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java读取文本文件
阅读量:7080 次
发布时间:2019-06-28

本文共 9177 字,大约阅读时间需要 30 分钟。

Java读取文本文件

http://www.cnblogs.com/lovebread/archive/2009/11/23/1609122.html

1、按字节读取文件内容

2、按字符读取文件内容
3、按行读取文件内容

4、随机读取文件内容 

public class ReadFromFile {    /**     * 以字节为单位读取文件,常用于读二进制文件,如图片、声音、影像等文件。     */    public static void readFileByBytes(String fileName) {        File file = new File(fileName);        InputStream in = null;        try {            System.out.println("以字节为单位读取文件内容,一次读一个字节:");            // 一次读一个字节            in = new FileInputStream(file);            int tempbyte;            while ((tempbyte = in.read()) != -1) {                System.out.write(tempbyte);            }            in.close();        } catch (IOException e) {            e.printStackTrace();            return;        }        try {            System.out.println("以字节为单位读取文件内容,一次读多个字节:");            // 一次读多个字节            byte[] tempbytes = new byte[100];            int byteread = 0;            in = new FileInputStream(fileName);            ReadFromFile.showAvailableBytes(in);            // 读入多个字节到字节数组中,byteread为一次读入的字节数            while ((byteread = in.read(tempbytes)) != -1) {                System.out.write(tempbytes, 0, byteread);            }        } catch (Exception e1) {            e1.printStackTrace();        } finally {            if (in != null) {                try {                    in.close();                } catch (IOException e1) {                }            }        }    }    /**     * 以字符为单位读取文件,常用于读文本,数字等类型的文件     */    public static void readFileByChars(String fileName) {        File file = new File(fileName);        Reader reader = null;        try {            System.out.println("以字符为单位读取文件内容,一次读一个字节:");            // 一次读一个字符            reader = new InputStreamReader(new FileInputStream(file));            int tempchar;            while ((tempchar = reader.read()) != -1) {                // 对于windows下,\r\n这两个字符在一起时,表示一个换行。                // 但如果这两个字符分开显示时,会换两次行。                // 因此,屏蔽掉\r,或者屏蔽\n。否则,将会多出很多空行。                if (((char) tempchar) != '\r') {                    System.out.print((char) tempchar);                }            }            reader.close();        } catch (Exception e) {            e.printStackTrace();        }        try {            System.out.println("以字符为单位读取文件内容,一次读多个字节:");            // 一次读多个字符            char[] tempchars = new char[30];            int charread = 0;            reader = new InputStreamReader(new FileInputStream(fileName));            // 读入多个字符到字符数组中,charread为一次读取字符数            while ((charread = reader.read(tempchars)) != -1) {                // 同样屏蔽掉\r不显示                if ((charread == tempchars.length)                        && (tempchars[tempchars.length - 1] != '\r')) {                    System.out.print(tempchars);                } else {                    for (int i = 0; i < charread; i++) {                        if (tempchars[i] == '\r') {                            continue;                        } else {                            System.out.print(tempchars[i]);                        }                    }                }            }        } catch (Exception e1) {            e1.printStackTrace();        } finally {            if (reader != null) {                try {                    reader.close();                } catch (IOException e1) {                }            }        }    }    /**     * 以行为单位读取文件,常用于读面向行的格式化文件     */    public static void readFileByLines(String fileName) {        File file = new File(fileName);        BufferedReader reader = null;        try {            System.out.println("以行为单位读取文件内容,一次读一整行:");            reader = new BufferedReader(new FileReader(file));            String tempString = null;            int line = 1;            // 一次读入一行,直到读入null为文件结束            while ((tempString = reader.readLine()) != null) {                // 显示行号                System.out.println("line " + line + ": " + tempString);                line++;            }            reader.close();        } catch (IOException e) {            e.printStackTrace();        } finally {            if (reader != null) {                try {                    reader.close();                } catch (IOException e1) {                }            }        }    }    /**     * 随机读取文件内容     */    public static void readFileByRandomAccess(String fileName) {        RandomAccessFile randomFile = null;        try {            System.out.println("随机读取一段文件内容:");            // 打开一个随机访问文件流,按只读方式            randomFile = new RandomAccessFile(fileName, "r");            // 文件长度,字节数            long fileLength = randomFile.length();            // 读文件的起始位置            int beginIndex = (fileLength > 4) ? 4 : 0;            // 将读文件的开始位置移到beginIndex位置。            randomFile.seek(beginIndex);            byte[] bytes = new byte[10];            int byteread = 0;            // 一次读10个字节,如果文件内容不足10个字节,则读剩下的字节。            // 将一次读取的字节数赋给byteread            while ((byteread = randomFile.read(bytes)) != -1) {                System.out.write(bytes, 0, byteread);            }        } catch (IOException e) {            e.printStackTrace();        } finally {            if (randomFile != null) {                try {                    randomFile.close();                } catch (IOException e1) {                }            }        }    }    /**     * 显示输入流中还剩的字节数     */    private static void showAvailableBytes(InputStream in) {        try {            System.out.println("当前字节输入流中的字节数为:" + in.available());        } catch (IOException e) {            e.printStackTrace();        }    }    public static void main(String[] args) {        String fileName = "C:/temp/newTemp.txt";        ReadFromFile.readFileByBytes(fileName);        ReadFromFile.readFileByChars(fileName);        ReadFromFile.readFileByLines(fileName);        ReadFromFile.readFileByRandomAccess(fileName);    }}

5、将内容追加到文件尾部

public class AppendToFile {    /**     * A方法追加文件:使用RandomAccessFile     */    public static void appendMethodA(String fileName, String content) {        try {            // 打开一个随机访问文件流,按读写方式            RandomAccessFile randomFile = new RandomAccessFile(fileName, "rw");            // 文件长度,字节数            long fileLength = randomFile.length();            //将写文件指针移到文件尾。            randomFile.seek(fileLength);            randomFile.writeBytes(content);            randomFile.close();        } catch (IOException e) {            e.printStackTrace();        }    }    /**     * B方法追加文件:使用FileWriter     */    public static void appendMethodB(String fileName, String content) {        try {            //打开一个写文件器,构造函数中的第二个参数true表示以追加形式写文件            FileWriter writer = new FileWriter(fileName, true);            writer.write(content);            writer.close();        } catch (IOException e) {            e.printStackTrace();        }    }    public static void main(String[] args) {        String fileName = "C:/temp/newTemp.txt";        String content = "new append!";        //按方法A追加文件        AppendToFile.appendMethodA(fileName, content);        AppendToFile.appendMethodA(fileName, "append end. \n");        //显示文件内容        ReadFromFile.readFileByLines(fileName);        //按方法B追加文件        AppendToFile.appendMethodB(fileName, content);        AppendToFile.appendMethodB(fileName, "append end. \n");        //显示文件内容        ReadFromFile.readFileByLines(fileName);    }}

 

http://www.cnblogs.com/manongxiaojiang/archive/2012/10/13/2722068.html

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);    }           }

 

你可能感兴趣的文章
EntityFramework IEnumerable,IQueryable ,Include
查看>>
memtrack: Couldn't load memtrack module (No such file or directory) 的问题解决
查看>>
Visio画图(一):UML用例图
查看>>
Docker入门(五):Swarms
查看>>
盘点:#AzureChat - 虚拟机和自动伸缩
查看>>
【PHP设计模式 04_GongChang.php】 工厂方法
查看>>
架构阅读笔记8
查看>>
awk
查看>>
FCC学习笔记(三)
查看>>
mysql丢数据
查看>>
【cl】基本数据类型
查看>>
算法训练 5-1最小公倍数
查看>>
Dom vs Canvas (译)
查看>>
洛谷P2633 王后万岁
查看>>
整理了一些t-sql技巧
查看>>
一键安装docker-ce
查看>>
java mybatis使用 设置resultType查询对象字段为null
查看>>
【转】mysql对large page的支持
查看>>
11-unittest
查看>>
学习OpenSeadragon之四(导航视图)
查看>>