文件读写操作工具类整理
来源:互联网 发布:数据运营驱动力包括 编辑:程序博客网 时间:2024/05/20 21:48
文件读写操作工具类:
package com.upload.smartupload;import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.RandomAccessFile;import java.io.Reader;public class FileUtil {/** * 以字节为单位读取文件,常用于读二进制文件,如图片、声音、影像等文件。 * @param fileName 文件的名 */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);FileUtil.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) {}}}}/** * 以字符为单位读取文件,常用于读文本,数字等类型的文件 * * @param fileName * 文件名 */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下,rn这两个字符在一起时,表示一个换行。// 但如果这两个字符分开显示时,会换两次行。// 因此,屏蔽掉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) {}}}}/** * 以行为单位读取文件,常用于读面向行的格式化文件 * * @param fileName * 文件名 */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) {}}}}/** * 随机读取文件内容 * * @param fileName * 文件名 */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个字节,则读剩下的字节。// 将一次读取的字节数赋给bytereadwhile ((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) {}}}}/** * 显示输入流中还剩的字节数 * * @param in */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);}/** * A方法追加文件:使用RandomAccessFile * * @param fileName * 文件名 * @param content * 追加的内容 */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 * * @param fileName * @param content */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 main1(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);}}
- 文件读写操作工具类整理
- 文件读写的操作整理
- 整理javascript操作文件说明:读写文件
- 读写文件工具类
- Java 读写文件工具类
- Excel文件读写工具类
- java 文件读写工具类
- 属性文件读写工具类
- Android 文件读写工具类
- Unity3D工具类 - 读写文件
- android 文件读写工具类
- 文件读写通用工具类
- C 文件读写整理
- Android 读写文件整理
- 文件读写整理
- 【工具类】-ini配置文件读写操作类
- 【工具类】-Xml配置文件读写操作类
- 文件操作工具类
- C++中的:和*号
- SEO的操作流程梗概
- 第九章(程序外观)
- 没有鼠标怎么办?键盘命令你知道几个?
- 【数据挖掘概念与技术】学习笔记3-数据预处理
- 文件读写操作工具类整理
- 搜索 MsiGetProductInfo 无法检索 Product Code 为“{CEFE8540-CF57-485B-9994-BE9E02D29193}”的包的 ProductVersion
- JNI MAVEN
- const 用法
- 那些年写过的shell-----getopts实现菜单效果
- 基于Socket的UDP和TCP编程介绍
- 搜索引擎的工作原理
- 一个网站完整详细的SEO优化方案(很不错的方案,其实之前也是这么干的,懒得形成书面)
- 引用和数组