阅读更多

2顶
1踩

编程语言

原创新闻 java读取文件与写文件

2016-09-12 08:54 by 见习记者 fj_ding 评论(1) 有56074人浏览

前言

java中io流一直是一个令人头疼的东西,主要是各种流,各种缓冲器太多,不好记忆,所以感觉学起来很费劲,选择起来也比较烦恼。

本文主要针对java的io流读取数据使用io流读取文件和向文件中写数据,并根据个人经验讲解应该怎么选择和使用。

 

需要的知识点:

1.字节流和字符流选择

字节流:字节流读取的时候,读到一个字节就返回一个字节;  主要用于读取图片,MP3,AVI视频文件。

字符流:字符流使用了字节流读到一个或多个字节,如读取中文时,就会一次读取2个字节。只要是处理纯文本数据,就要优先考虑使用字符流。

 

2.处理流和节点流

节点流:和操作系统紧密连接的流。该层的与文件输入输出的操作都比较原始,没有进过优化,功能比较单一。

(FileReader,FileWriter和FileInputStream,FileOutStream都是输入节点流。)

 

处理流:该层流是对节点流的封装,对节点流中进行优化,加入缓冲器,提供更加丰富的API等。我们一般都使用处理流,在创建处理流对象的时候一般都需要节点流对象作为其构造参数。

(BufferedInPutStream,BufferedOutPutStream和BufferedWriter,BufferedReader)

对于这种带缓冲器的处理流与对应的节点流的最大区别可以参考:http://fjding.iteye.com/blog/2311233

 

本文重点讲解文件的读取和输出。

 

1. 文件的读取(节点流FileInputStream读取字节流)

 

 

	public static void readFileByBytes(String fileName) {
		// 一般先创建file对象
		FileInputStream fileInput = null;
		try {
			File file = new File(fileName);
			if (!file.exists()) {
				file.createNewFile();
			}
			byte[] buffer = new byte[1024];
			fileInput = new FileInputStream(file);
			int byteread = 0;
			// byteread表示一次读取到buffers中的数量。
			while ((byteread = fileInput.read(buffer)) != -1) {
				System.out.write(buffer, 0, byteread);
			}

		} catch (Exception e) {
			// TODO: handle exception
		} finally {

			try {
				if (fileInput != null) {
					fileInput.close();
				}
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}

		}

	}

 

 

 

 

2. 文件读取(节点流FileReader读取字符流)

 

 

public static void readFileByChars(String fileName) {
		FileReader reader = null;
		try {
			File file = new File(fileName);
			if (!file.exists()) {
				file.createNewFile();
			}
			reader = new FileReader(file);
			char[] buffer = new char[1024];
			int charread = 0;
			while ((charread = reader.read(buffer)) != -1) {
				System.out.print(buffer);
			}
		} catch (IOException e) {
			// TODO: handle exception

		} finally {

			try {
				if (reader != null) {
					reader.close();
				}
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}

	}

 其实FileReader也是需要FileInputStream对象转换的,要借助于InputStreamReader转换流。

 

 

3.文件的读取通过BufferedReader读取数据。

 

public static void readByBufferedReader(String fileName) {
		try {
			File file = new File(fileName);
			// 读取文件,并且以utf-8的形式写出去
			BufferedReader bufread;
			String read;
			bufread = new BufferedReader(new FileReader(file));
			while ((read = bufread.readLine()) != null) {
				System.out.println(read);
			}
			bufread.close();
		} catch (FileNotFoundException ex) {
			ex.printStackTrace();
		} catch (IOException ex) {
			ex.printStackTrace();
		}
	}

 

 

4.向文件中写入数据(字节流FileOutputStream)

 

public void writeByFileOutputStream() {

		FileOutputStream fop = null;
		File file;
		String content = "This is the text content";
		try {
			file = new File("c:/newfile.txt");
			fop = new FileOutputStream(file);
			// if file doesnt exists, then create it
			if (!file.exists()) {
				file.createNewFile();
			}
			// get the content in bytes
			byte[] contentInBytes = content.getBytes();

			fop.write(contentInBytes);
			fop.flush();
			fop.close();

		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			try {
				if (fop != null) {
					fop.close();
				}
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}

 

 

5. 向文件中写数据(FileReader)【注意使用FileReader(“path”,true)可以往文件后面追加内容,否则就直接覆盖了】

 

public static void writeByFileReader() {
		try {
			String data = " This content will append to the end of the file";

			File file = new File("javaio-appendfile.txt");
			// if file doesnt exists, then create it
			if (!file.exists()) {
				file.createNewFile();
			}

			// true = append file
			FileWriter fileWritter = new FileWriter(file.getName(), true);
			fileWritter.write(data);
			fileWritter.close();

		} catch (IOException e) {
			e.printStackTrace();
		}

	}

 

 

6.采用BufferedWriter向文件中写数据

 

public static void writeByBufferedReader() {
		try {

			String content = "This is the content to write into file";
			File file = new File("/users/mkyong/filename.txt");
			// if file doesnt exists, then create it
			if (!file.exists()) {
				file.createNewFile();
			}
			FileWriter fw = new FileWriter(file, true);
			BufferedWriter bw = new BufferedWriter(fw);
			bw.write(content);
			bw.flush();
			bw.close();

		} catch (IOException e) {
			e.printStackTrace();
		}
	}

 

 

总结:

       对于我来说,一般使用io来操作文件比较多一些,一般都喜欢用BufferedReader和BufferedWriter,使用它们的一般流程是,先创建File对象(可以对路径和文件进行更多的操作),然后通过File对象创建FileReader(FileWriter)【当然在这里也可以通过创建InputStreamReader(new InputStream)来获取reader对象,看个人爱好】,然后通过FileReader(FileWriter)获得BufferedReader(BufferedWriter)对象。对于读入文件,还可以使用Scanner对读取的文件进行操作,这个比较方便,Scanner也是处理流,因此也是需要节点流作为其参数的。

 

参考:

http://blog.csdn.net/yuebinghaoyuan/article/details/7388059

http://www.docin.com/p-747385065.html

http://blog.csdn.net/zzp_403184692/article/details/8057693

http://www.jb51.net/article/47062.htm

2
1
评论 共 1 条 请登录后发表评论
1 楼 飞天奔月 2016-09-14 12:15
我该说点什么呢, 嗯~~~

apache commons-io 是个好东西

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • java远程读写服务器文件

    主要实现的是登录服务器操作服务器的中的文件数据,支持读写的操作。主要使用的方法getProperties是设置配置的login(参数一是访问服务器的配置,参数二是设置读还是写)方法是读写连接服务器

  • Java中使用opencsv读写csv文件示例

    主要介绍了Java中使用opencsv读写csv文件示例,本文给出了读CSV文件、写CSV文件、自定义分隔符、生成Javabeans等内容,需要的朋友可以参考下

  • java 文件目录读写删除操作详细实现代码

    主要介绍了java 文件读写删操作详细实现代码,需要的朋友可以参考下

  • Java对xls文件进行读写操作示例代码

    Java开发项目中经常会碰到处理Excel文件中数据的情况,下面这篇文章主要给大家介绍了利用Java对xls文件进行读写操作的相关资料,文中通过示例代码介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来...

  • java文件读写工具类分享

    主要为大家详细介绍了java文件读写工具类,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  • 完美解决java读取大文件内存溢出的问题

    下面小编就为大家带来一篇完美解决java读取大文件内存溢出的问题。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  • java读写文件

    1、一次性读取整个文件内容 /** * 一次性读取全部文件数据 * @param strFile */ public static void readFile(String strFile){ try{ InputStream is = new FileInputStream(strFile); ...

  • java读写文件(txt)

    java读取文件内容 转换成字符串 正则匹配获取所有手机号 并保存到另一文件中 文件可以是txt excel word 文件等。

  • java读取文件和写入文件的方式(简单实例)

    下面小编就为大家带来一篇java读取文件和写入文件的方式(简单实例)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  • Java 解决读写本地文件中文乱码的问题

    主要介绍了Java 解决读写本地文件中文乱码的问题的相关资料,需要的朋友可以参考下

  • Android如何读写CSV文件方法示例

    CSV 文件是Excel 的标准文件格式,在开发过程中经常需要格式化输出数据。CSV 的格式非常简单,都是一行一行存储的,同一...下面这篇文章主要给大家介绍了关于Android如何读写CSV文件的相关资料,需要的朋友可以参考下。

  • conf:使用Java读取各种配置文件的类库

    这是一个解决Java开发中读取配置文件每次都要重写的困惑。 特性 开箱即用,简单方便 支持JDK1.6+ 无需过多依赖,按需添加 状态 [已完成] 解析Properties配置文件 [待完成] 解析Xml配置文件 [待完成] 解析Ini配置...

  • java对csv文件进行读写操作

    使用java对csv文件进行读写操作的源代码,包含javacsv.jar

  • Java文件的读写

    java文件读写

  • 音频文件Tag标签读写工具_java读写文件Tag标签工具类

    最近在整理自己电脑的音乐文件,希望音乐tag标签信息能使用java程序批量处理,网上找了相关资料,发现有一个老外写的工具类org.jaudiotagger可以满足需要,但在使用过程中发现读取中文变成乱码问题,然后我把这个...

  • java 文件读写

    java文件读写,读取properties配置文件,读取目录及文件

  • java读写hdf5格式文件需要使用的库

    压缩包中包含java读写hdf5格式文件时需要的jar包和动态链接库,动态链接库提供了windows、linux两种版本的

  • Java读写txt文件

    Java读写txt文件 读文件 写文件 读文件 // 读取文件内容 参数要完成路径和文件名 String filePathName="D:/test/tgj/test1.txt"; private static List<String> ReadFileCon(String filePathName){ List<String> ...

  • Java IO:文件读写、流操作与常用技巧

    Java IO提供了许多用于文件读写和数据流操作的类和接口,本文将介绍如何使用这些工具来处理输入输出操作。首先,我们将讨论File类,它允许您在Java程序中操作文件和文件夹。我们还将介绍如何使用Java输入输出流...

  • java中如何读写文件_JAVA: 读写文件的几种方法

    如果您使用java8,可以也参考这篇文章:JAVA: Java8流逐行读取文件import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException...

Global site tag (gtag.js) - Google Analytics