`

常用几种读取文件的方法

    博客分类:
  • io
阅读更多

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、将内容追加到文件尾部

复制代码
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->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);
    }
}
分享到:
评论

相关推荐

    .net实现文件读写的几种常用方法

    文件的读写是.net中常用的功能,本文即以实例形式展示.net实现文件读写的几种常用方法,供大家参考之用。具体如下: 在.net中有很多有用的类库来读写硬盘上的文件,一般比较常用的有: File: 1.什么时候使用:当...

    利用MATLAB读取HDF格式数据的实用方法

    HDF是一种广泛用于科学...本文首先介绍了HDF文件格式,以及几种常用的HDF文件读取方式和各自的优缺点。在此基础上,详细给出了MATLAB读取HDF文件的简易方法和代码。最后,本文给出了利用MATLAB读取NCEP数据的应用实例。

    Visual_C++利用互斥量同步线程实现文件读取进度条

    文件读取进度条的实现可以有很多种方法,常用的是在读取文件的过程中 隔一定时间向对话框发送消息以控制进度条的位置,但是这种方法很难确定隔多 少时问发送一个消息,因为文件的大小是不确定的,时间间隔长了可能文件...

    VC++(VS2010)读写Excel文件代码(附示例)

    常用的Excel打开方式有两种 1)通过数据库打开; 2)OLE方式打开。 由于方式1)操作繁琐,经常出现莫名的错误,这里选用方式2). 4、准备步骤 首先新建一个Dialog窗体程序,添加list control和两个按钮 1...

    PHP读取大文件的几种方法介绍

    读取大文件一直是一个头痛的问题,我们像使用php开发读取小文件可以直接使用各种函数实现,但一到大文章就会发现常用的方法是无法正常使用或时间太长太卡了,下面我们就一起来看看关于php读取大文件问题解决办法,...

    java中关于文本文件的读写方法实例总结

    主要介绍了java中关于文本文件的读写方法,实例总结了Java针对文本文件读写的几种常用方法,并对比了各个方法的优劣及特点,具有一定参考借鉴价值,需要的朋友可以参考下

    Python3读写Excel文件(使用xlrd,xlsxwriter,openpyxl3种方式读写实例与优劣)

    Python中几种常用包比较 2、用xlrd包读取Excel文件 引用包 import xlrd 打开文件 xlrd.open_workbook(r'/root/excel/chat.xls') 获取你要打开的sheet文件 # 获取所有sheet sheet_name = workbook.sheet_names()...

    MFC文件操作

    文件打开模式可组合使用,用“|”隔开,常用的有以下几种: CFile::modeCreate:以新建方式打开,如果文件不存在,新建;如果文件已存在,把该文件长度置零,即清除文件原有内容。 CFile::modeNoTruncate:以追加...

    13.第十三章 文件.txt

    对文件的读和写是最常用的文件操作,在C语言标准库中提供了多种文件读写的函数。 字符读写函数:fgetc和fputc 字符串读写函数:fgets和fputs 数据块读写函数:fread和fwrite 格式化读写函数:fscanf和fprintf ...

    java常用知识例子讲解

    刚收集的一些java常用的知识,包括几种xml读写方法,生产者消费者多线程,反射加载,文件读写等

    入门学习Linux常用必会60个命令实例详解doc/txt

    在使用mount这个指令时,至少要先知道下列三种信息:要加载对象的文件系统类型、要加载对象的设备名称及要将设备加载到哪个目录下。 (1)Linux可以识别的文件系统 ◆ Windows 95/98常用的FAT 32文件系统:vfat ;...

    如何编写批处理文件批处理文件批处理文件

    下一个文件之前,每份文件都已被打开、读取并经过处理。 处理包括读取文件,将其分成一行行的文字,然后将每行 解析成零或更多的符号。然后用已找到的符号字符串变量值 调用 For 循环。以默认方式,/F 通过每个...

    CFile与CStdioFile的文件读写使用方法详解

    文件打开模式可组合使用,用“|”隔开,常用的有以下几种:CFile::modeCreate:以新建方式打开,如果文件不存在,新建;如果文件已存在,把该文件长度置零,即清除文件原有内容。CFile::modeNoTruncate:以追加方式...

    Asp.net把图片存入数据库和读取图片的方法

    网上关于ASP.NET上传图片到数据库的资料非常多,常用的如下:存储图片类型数据有以下几种方式:1.将图片转换为二进制数组(byte[]) 代码如下:byte[] fileData = this.FileUpload1.FileBytes; 2. 根据路径将文件转换...

    Spark SQL常见4种数据源详解

    通用load/write方法 手动指定选项 Spark SQL的DataFrame接口支持多种数据源的操作。一个DataFrame可以进行RDDs方式的操作,也可以被注册为临时表。把DataFrame注册为临时表之后,就可以对该DataFrame执行SQL查询。...

    C语言程序设计标准教程

    文件的读写对文件的读和写是最常用的文件操作。 在C语言中提供了多种文件读写的函数: ?字符读写函数 :fgetc和fputc ?字符串读写函数:fgets和fputs ?数据块读写函数:freed和fwrite ?格式化读写函数:fscanf和...

    Python中read()、readline()和readlines()三者间的区别和用法

    众所周知在python中读取文件常用的三种方法:read(),readline(),readlines(),今天看项目是又忘记他们的区别了。以前看书的时候觉得这东西很简单,一眼扫过,待到用时却也只知道有这么几个方法,不懂得它的原理与...

    C#全能速查宝典

    《C#全能速查宝典》共分为8章,分别介绍了C#语言基础、Windows窗体及常用控件、Windows高级控件、控件公共属性、方法及事件、数据库开发、文件、数据流与注册表、GDI+绘图技术和C#高级编程,共包含562个C#编程中常用...

    ReadFromFile.java

    这个一个工具类,里面包含了几种常用的java读取文件的方式,有按照字节读取(二进制文件)、按照字符读取(文本数字型文件)、按行读取(按照行格式化的文件)以及随机读取这4中读取方式。

Global site tag (gtag.js) - Google Analytics