`
lizhenbin2010
  • 浏览: 99682 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

JAVA读写文件基本方法

    博客分类:
  • J2se
阅读更多

      JAVA读写文件的基本方法,Reader 类是 Java 的 I/O 中读字符的父类,而 InputStream 类是读字节的父类,InputStreamReader 类就是关联字节到字符的桥梁,它负责在 I/O 过程中处理读取字节到字符的转换,而具体字节到字符的解码实现它由 StreamDecoder 去实现,在 StreamDecoder 解码过程中必须由用户指定 Charset 编码格式。值得注意的是如果你没有指定 Charset,将使用本地环境中的默认字符集,例如在中文环境中将使用 GBK 编码。

写的情况也是类似,字符的父类是 Writer,字节的父类是 OutputStream,通过 OutputStreamWriter 转换字符到字节。

下面是我的具体实现对一个文件的读写操作:

package j2se.common;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;

/**
 * 
 * 功能描述:读取文件与输入文件工具类
 *
 * @author  lizhenbin
 *
 * <p>修改历史:(修改人,修改时间,修改原因/内容)</p>
 */
public class IOUtil {
	
	/**
	 * ISO编码
	 */
	private static final String ISO_ENCODE = "ISO-8859-1";
	/**
	 * GBK编码
	 */
	private static final String GBK_ENCODE = "GBK";
	/**
	 * UTF-8编码
	 */
	private static final String UTF_ENCODE = "UTF-8";
	/**
	 * 缓冲区大小
	 */
	private static final int BUF_SIZE = 64;
	
	/**
	 * 构建单例模式
	 */
	private static final IOUtil instance = new IOUtil();
	private IOUtil() {}
	public static IOUtil getInstance() {
		return instance;
	}
	
	/**
	 * 
	 * 功能描述:通过OutputStreamWriter写入文件
	 *
	 * @author  lizhenbin
	 * <p>创建日期 :Aug 19, 2012 11:35:23 AM</p>
	 *
	 * @param filePath
	 * 			文件路径
	 * @param charset
	 * 			字符集
	 * @param message
	 * 			写入文件内容
	 * @return
	 *
	 * <p>修改历史 :(修改人,修改时间,修改原因/内容)</p>
	 */
	public static boolean writeByOutputStreamWriter(String filePath, String charset, Object message) {
		if(!paramCheck(filePath) || !paramCheck(charset))
			return false;
		if(message == null)
			message = "";
		OutputStream outs = null;
		OutputStreamWriter writer = null;
		try {
			outs = new FileOutputStream(filePath);
			writer = new OutputStreamWriter(outs, charset);
			writer.write(message.toString());
			return true;
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			if(writer != null)
				try {
					writer.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			if(outs != null)
				try {
					outs.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
		}
		return false;
	}
	
	/**
	 * 
	 * 功能描述:通过InputStreamReader读取文件
	 *
	 * @author  lizhenbin
	 * <p>创建日期 :Aug 19, 2012 11:28:33 AM</p>
	 *
	 * @param filePath
	 * 			文件URL
	 * @param charset
	 * 			字符集
	 * @return
	 *
	 * <p>修改历史 :(修改人,修改时间,修改原因/内容)</p>
	 */
	public static String readByInputStreamReader(String filePath, String charset) {
		if(!paramCheck(filePath) || !paramCheck(charset))
			return null;
		InputStream ins = null;
		InputStreamReader reader = null;
		try {
			ins = new FileInputStream(filePath);
			reader = new InputStreamReader(ins, charset);
			StringBuffer sb = new StringBuffer();
			char[] buf = new char[BUF_SIZE];
			int count = 0;
			while((count = reader.read(buf)) != -1) {
				sb.append(buf, 0, count);
			}
			return sb.toString();
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			if(reader != null)
				try {
					reader.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			if(ins != null)
				try {
					ins.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
		}
		return null;
	}
	
	/**
	 * 
	 * 功能描述:ISO-8859-1编码的字符串转换成GBK
	 *
	 * @author  lizhenbin
	 * <p>创建日期 :Aug 19, 2012 11:42:19 AM</p>
	 *
	 * @param isoStr
	 * 			ISO编码字符串
	 * @return
	 *
	 * <p>修改历史 :(修改人,修改时间,修改原因/内容)</p>
	 */
	public static String isoToGBK(String isoStr) {
		try {
			return new String(isoStr.getBytes(ISO_ENCODE), GBK_ENCODE);
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}
		return null;
	}
	
	/**
	 * 
	 * 功能描述:ISO-8859-1编码的字符串转换成UTF-8
	 *
	 * @author  lizhenbin
	 * <p>创建日期 :Aug 19, 2012 11:42:19 AM</p>
	 *
	 * @param isoStr
	 * 			ISO编码字符串
	 * @return
	 *
	 * <p>修改历史 :(修改人,修改时间,修改原因/内容)</p>
	 */
	public static String isoToUtf8(String isoStr) {
		try {
			return new String(isoStr.getBytes(ISO_ENCODE), UTF_ENCODE);
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}
		return null;
	}
	
	/**
	 * 
	 * 功能描述:空值验证
	 *
	 * @author  lizhenbin
	 * <p>创建日期 :Aug 19, 2012 11:22:34 AM</p>
	 *
	 * @param filePath
	 * @return
	 *
	 * <p>修改历史 :(修改人,修改时间,修改原因/内容)</p>
	 */
	private static boolean paramCheck(String param) {
		if(param != null && !param.equals(""))
			return true;
		return false;
	}
	
	public static void main(String[] args) {
		IOUtil io = IOUtil.getInstance();
		System.out.println(io.readByInputStreamReader("d:\\test.txt", IOUtil.GBK_ENCODE));
	}
	
}

 

分享到:
评论

相关推荐

    java文件的读写类的例子

    java中常用文件读写的详细例了说明(java中常用的IO)

    java POI读取Excel文件基本用法Demo

    本案例中利用Apache Poi读取Excel用法,源码注释详细基本用法!

    Java获取文件分辨率,大小等基本信息Demo

    这个文件中包含测试的Demo和需要的jar包,Demo中有两种方式来获取视频的分辨率,大小等基本信息,简单易上手,亲测有效,没效你顺着网线过来da我

    Java解析FTP服务器文本文件

    对FTP服务器文件的基本操做:上传下载递归目录遍历等。

    Java IO 基础操作(文件读写和移动)

    Java 中的一些基本文件操作,包括:文件操作(移动、读写)和文本文件读写

    JAVA上百实例源码以及开源项目

    Java读写文本文件的示例代码 1个目标文件。 java俄罗斯方块 一个目标文件。 Java非对称加密源码实例 1个目标文件 摘要:Java源码,算法相关,非对称加密  Java非对称加密源程序代码实例,本例中使用RSA加密技术,...

    java读取apk名称、图片、文件解压、读取

    完整apk读取,如不理解,可加我QQ咨询:444972427~非技术人员请勿打扰~ ...2.testAPK 读取apk文件图片 3.test读取apk中AndroidManifest.xml文件 4.ZipUtils解压文件 5.JFileSearch查询文件 6.ReadFromFile读文件

    Java的文件处理相关工具类

    提供java中对文件类的各种基本操作,主要包括获取文件的后缀名称,读取文件内容,写入文件内容,拷贝文件,将文件转换为二进制数组等操作,转换为Blob格式类等操作

    java 读取word文件

    java io读取word文件的基本操作 简单易用 其中用到组件tm-extractors-0.4.jar 说明:需要把tm-extractors-0.4.jar放到类路径下面

    java properties文件读取

    这是做项目中,集成第三东西需要些配置,我抽取到属性文件中,然后写了个公用类统一调用,基本就是key返回具体值,属性文件位置自己可以调整,然后类中修改获取路径就可以了。目前我的属相文件放置在src下

    java源码包---java 源码 大量 实例

    Java读写文本文件的示例代码 1个目标文件。 java俄罗斯方块 一个目标文件。 Java非对称加密源码实例 1个目标文件 摘要:Java源码,算法相关,非对称加密  Java非对称加密源程序代码实例,本例中使用RSA加密技术,...

    java获取读取未读邮件旧未读邮件最新邮件删除邮件指定读取指定邮件下载附件内容包括附件包含javamailjar

    项目中要求读取指定邮件未读邮件的内容,在网上查了很多资料发现都不行,不是自己想要的,要么是读取最新的,要么是读取第一封邮件,根本就不能读取未读的旧邮件。...java读取未读邮件内容包括附件包含javamail.jar

    java读取文件夹中视频的视频信息.视频的大小,时长,名字等等

    92分2秒---143.46M---LabView02---第11章文件的IO及保存.wmv---F:/Resource/video/硬件/AltiumDesigner/LabView02-第11章文件的IO及保存.wmv 37分22秒---58.09M---LabView03---第12章LabVIEW的通信.wmv---F:/...

    java程序设计基本数据的文件读写

    将100个随机生成的小数写入文件,要求以‘#’分隔,然后从文件中以此读出每一个小数,求其中最大值,最小值,平均值,文件有详细的说明,主要运用了RandomAccessFile类的相关方法,有然后任何不懂可以提问,会进行...

    XML文件在Java程序中的基本运用.zip

    这个是一个Java程序的压缩包,内容主要是在Java程序中读取调用xml文件,通过Java程序编写xml文件等基础操作。代码很简单,其中包含dom4j的基础用法。

    java 编写文件上传类简单易用

    本文将从文件传输的基本原理入手,分析如何用 java进行文件的上传,并提出解决方案。 一、基本原理 通过 HTML 上载文件的基本流程如下图所示。浏览器端提供了供用户选择提交内容的界面(通常是一个表单),在用户...

    Java实现批量下载并压缩文件.pptx.pptx

    Java中的文件下载是通过输入输出流实现的,将远程服务器的文件读取到本地,从而实现文件的下载。 Java进行文件下载的方法 Java中可以使用HttpURLConnection或者Apache HttpClient等工具类进行文件下载,通过设置请求...

    java源码包4

    Java读写文本文件的示例代码 1个目标文件。 java俄罗斯方块 一个目标文件。 Java非对称加密源码实例 1个目标文件 摘要:Java源码,算法相关,非对称加密  Java非对称加密源程序代码实例,本例中使用RSA加密技术...

    java实现mysql数据库的表导出到excel文件

    java实现mysql数据库的表导出到excel文件,已经基本的demo包含jar包,可以导入的eclipse里面。比较好用吧

    java源码包3

    Java读写文本文件的示例代码 1个目标文件。 java俄罗斯方块 一个目标文件。 Java非对称加密源码实例 1个目标文件 摘要:Java源码,算法相关,非对称加密  Java非对称加密源程序代码实例,本例中使用RSA加密技术...

Global site tag (gtag.js) - Google Analytics