`
lizhenbin2010
  • 浏览: 101281 次
  • 性别: 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读取文件方法大全:读取File流...

    java 读取文件 文件读取操作

    Java中`java.io.FileInputStream`类提供了按字节读取文件的功能。这种方法适用于读取二进制文件,例如图像、音频或视频文件。下面的代码示例展示了如何按字节读取文件: ```java FileInputStream in = new ...

    java 按顺序读取文件

    在上述代码中,`BufferedReader`的`readLine()`方法用于按顺序读取文件内容,直到文件末尾。如果文件内容较多,使用缓冲可以显著提高读取速度,因为数据会一次性读入内存,而不是每次读取一个字符。 除了`...

    Java读取文件方法大全

    Java语言在处理文件I/O操作时提供了多种方法,这些方法可以按照不同的策略读取文件,例如按字节或字符进行。下面将详细讲解Java中读取文件的主要方法,并结合给出的代码片段进行分析。 首先,Java中最基础的文件...

    JAVA实现远程文件读取

    在JAVA中,Socket是最基本的网络编程接口,用于建立客户端和服务器端之间的连接。RemoteFileClient类使用Socket连接到RemoteFileServer,以便读取远程文件。Socket编程可以分为两个部分:客户端编程和服务器端编程。...

    java读取局域网共享机器文件

    通过以上方法,Java开发者可以实现从局域网共享机器上读取文件的功能。这个过程涉及到网络通信、文件I/O以及可能的身份验证,是Java网络编程中的一项重要技能。在开发过程中,了解和熟练掌握这些知识点对于解决实际...

    java如何读取文件

    在Java编程语言中,读取文件是一项常见的操作,尤其是...总之,理解如何在Java中读取文件是每个开发者的基本技能之一。掌握了这种方法,就可以轻松处理各种文件操作需求,无论是简单的文本文件还是更复杂的二进制数据。

    java读写文件的方法.pdf

    本示例主要介绍了四种在Java中读取文件的方法:按字节读取、按字符读取、按行读取以及随机读取。 1. **按字节读取文件内容**: - `FileInputStream` 类是用于按字节读取文件内容的基础类。在`ReadFromFile`类的`...

    java读写文件(txt)

    在Java编程中,读写文件是一项基础且重要的任务,...以上就是关于“Java读写文件(txt)”的知识点,包括文件的读取、内容转换、正则匹配以及文件的写入。希望这些内容能帮助你理解和掌握Java在文件操作上的基本技能。

    java读取TXT文件入库

    - 读取文件和操作数据库完成后,记得关闭`BufferedReader`、`FileReader`、`PreparedStatement`和`Connection`,以释放系统资源。 ```java br.close(); fr.close(); pstmt.close(); conn.close(); ``` 以上就是...

    java读取mpp文件

    // 读取文件版本信息 FileVersion fileVersion = reader.getFileVersion(); System.out.println("文件版本: " + fileVersion.getMajor() + "." + fileVersion.getMinor()); // 读取整个项目文件 ProjectFile ...

    java读取本地.db文件实例

    在Java编程中,读取本地SQLite数据库(.db文件)是一项常见的任务,特别是在移动应用开发或者需要离线存储数据的场景下。SQLite是一种轻量级的、开源的关系型数据库,它不需要单独的服务器进程,可以直接在应用程序...

    Java 读写文件文本文件的示例

    - **实现方法**:通过`BufferedReader`逐行读取文件,并将每一行追加到`StringBuffer`对象中。`BufferedReader`能够提高读取效率,因为它支持一次读取一行数据。 ```java public void readToBuffer(StringBuffer ...

    java中读取目录下指定的文件

    以上就是Java中读取目录下指定文件的基本方法。通过灵活运用`File`类及其相关方法,可以实现各种复杂的文件操作需求。在实际开发中,根据具体场景选择合适的方法,并确保处理异常,以保证程序的健壮性。

    java实现文件的读写操作

    除了基本的读写,Java还提供了更多高级功能,如文件的复制、移动、删除、重命名等。例如,可以使用`Files.copy()`方法复制文件,`Files.move()`方法移动文件,`file.delete()`方法删除文件,以及`file.renameTo()`...

    java读取文件方法大全.txt

    根据提供的文件信息,本文将详细介绍Java中用于读取文件的各种方法。这包括使用不同类(如`InputStream`, `FileInputStream`, `BufferedReader`, `InputStreamReader`等)来按字节或字符读取文件的方式。 ### Java...

    java 读取FTP服务器文件

    7. **读取文件**: 使用`retrieveFileStream()`或`retrieveFile()`方法下载文件。通常,我们使用`BufferedReader`来读取文本文件。 ```java FileOutputStream fos = new FileOutputStream("localfile.txt"); ftp...

    用java读取ini文件(支持中文)

    1. **读取文件**:首先,`IniReader`类会使用`BufferedReader`或其他文件流API打开并读取INI文件内容。 2. **处理编码**:为了正确处理中文字符,`IniReader`可能使用`InputStreamReader`,并指定UTF-8或其他合适的...

    java中用FileUtil实现文件读写

    在Java开发中,文件的读写操作是一项基本且重要的任务。通过自定义工具类`FileUtil`来封装常见的文件操作,可以极大地提高代码的可读性和维护性,同时简化实际开发中的文件处理流程。本文将基于提供的`FileUtil`部分...

    java读取shp文件代码

    通过以上代码示例和解析,我们可以看到Java提供了一种有效的方法来处理Shapefile文件及其相关属性数据。这些功能对于开发GIS应用至关重要,可以帮助开发者更好地理解和操作空间数据。同时,通过适当的异常处理机制,...

Global site tag (gtag.js) - Google Analytics