读写文件内容

原创 2013年12月04日 09:49:18

 

 

 

public class IOStreamDemo {
	public static void main(String[] args) {
		try {
BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter("C:\\file_out.txt"));
BufferedReader bufferedReader = new BufferedReader(new FileReader("c:\\hb.log"));
			String tempStr;
			while((tempStr = bufferedReader.readLine()) != null){
				System.out.println(tempStr);
				bufferedWriter.write(tempStr);
			}
			bufferedReader.close();
			//数据先是放到缓冲区中的,然后再写入文件,因此一定要用flush()方法,否则在文件中没有数据显示
			bufferedWriter.flush();
			bufferedWriter.close();
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

与JDBC编程一样,程序里打开的文件IO资源不属于内存里的资源,垃圾回收机制无法回收该资源,所以应该显示关闭IO资源

 

使用java的IO流执行输出时,不要忘记关闭输出流,关闭输出流除了可以保证流的物理资源被回收之外,可能还可以将输出流缓冲区中的数据flush到物理节点(因为在执行close()方法之前,自动回执行输出流的flush()方法)

 

 

转换流

InputStreamReader : 将字节输入流转换成字符输入流

OutputStreamWriter : 将字节输出流转换成字符输出流

 

怎么没有把字符流转换成字节流?

字节流比字符流的使用更广泛,但是字符流比字节流操作更方便。如果有一个流已经是字符流了,也就是说,一个用起来更方便的流,为什么要转换成字节流呢?反之,如果现在有一个字节流,但我们知道这个字节流的内容都是文本内容,那么把它转换成字符流来处理会更方便一些,所以java只提供了将字节流转换成字符流的类。

public class ReadOfficeDoc {

	/*
	 * 不能直接获取doc文档中的数据,获取的全部是乱码
	 */
	public static void main(String[] args) {
		FileInputStream fis;
		try {
			fis = new FileInputStream("c:\\HUAWEI统一WebUI接口说明书.doc");
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(fis));
			String str;
			while((str = bufferedReader.readLine()) != null){
				System.out.println(str);
			}
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

 

Java使用System.in代表标准输入,即键盘输入,但这个标准输入时InputStream类的实例,使用不太方便,而且键盘输入内容都是文本内容,所以可以使用InputSteamReader将其转换成字符流,普通的Reader读取输入内容时依然不太方便,我们可以将普通的Reader再次包装成BufferedReader,利用BufferedReader的readLine()方法可以一次读取一行内容。

 

package hb.io;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class KeyInTest {

	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		String buffer = null;
		while((buffer = br.readLine()) != null){
			if(buffer.equals("exit")){
				break;
			}else{
				System.out.println(buffer);
			}
		}
	}

}

 

使用命令编译

javac KeyInTest.java

java KeyInTest

 

备注:BufferedReader具有一个readLine()方法,可以非常方便地一次读取一行内容,所以经常把读取文本内容的输入流包装成BufferedReader,用来方便的读取输入的文本内容

 

由于PrintStream类的输出功能非常强大,通常如果我们需要输出文本内容,都应该将输出流包装成PrintStream后进行输出。

System.out的类型就是PrintStream.

package hb.io;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintStream;

public class PrintStreamTest {

	public static void main(String[] args) {
		try {
			FileOutputStream fos = new FileOutputStream("c:\\hb.txt");
			PrintStream ps = new PrintStream(fos);
			ps.println("hello");
			ps.print(new PrintStreamTest());
			ps.close();
			fos.close();
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
		}
		
	}

}

 

提取gz文件中的压缩部分数据,C语言实现

gz文件是gzip产生的压缩文件。前几天接到一个小任务,说是要将其中被压缩的数据提取出来。于是动手写了个小程序实现之。    关于gzip文件格式的相关信息,可以查看RFC 1952 ...
  • lu188887
  • lu188887
  • 2012年08月07日 15:02
  • 1978

Hadoop笔记四之Hdfs文件读写操作

本例是hdfs中关于文件的读写操作描述。
  • ty4315
  • ty4315
  • 2016年07月19日 22:04
  • 394

golang 读写文件内容(备份)

以下是读取文件内容package main import ( "bufio" "fmt" "io" "os" "strings" ) func main() {...
  • yatere
  • yatere
  • 2013年04月14日 23:21
  • 2994

xml文件内容的读写

xml DOM XML DOM (XML Document Object Model) 定义了访问和操作 XML 文档的标准方法。 DOM 把 XML 文档作为树结构来查看。能够通过 DOM 树来...
  • zyq0335
  • zyq0335
  • 2013年11月13日 10:31
  • 526

lua读写指定文件内容

--读取指定文件 function getFile(filename) local filename = cc.FileUtils:getInstance():fullPathForFilen...
  • themagickeyjianan
  • themagickeyjianan
  • 2014年12月17日 13:34
  • 1313

c# 读写ini文件内容

using System.Runtime.InteropServices;         [DllImport("kernel32")]   //调用kernel32.dll读取ini文件中的内容 ...
  • ping16002
  • ping16002
  • 2008年08月28日 21:42
  • 356

Autohotkey读写ini文件内容

写入INI文件方法: IniWrite, Value, my.ini, Section, key  读取INI文件方法:IniRead, OutputVar, my.ini, Section, key...
  • wbryfl
  • wbryfl
  • 2016年05月18日 11:28
  • 738

字符串常用方法—文件内容读写

//【字符串文件读写】 //读取文件中的字符串 NSString *path = @"/Users/yongkaidong/Desktop/note.txt"; NS...
  • github_26672553
  • github_26672553
  • 2016年01月30日 19:58
  • 243

C#读取HTML文件内容写入记事本

try            {                int totalFile = 0;                //string dirPath = @"E:/chfuMetarn...
  • tianyaxiang
  • tianyaxiang
  • 2010年03月31日 13:09
  • 1421

读写ini配置文件

请尊重原创:  原文地址:点击打开链接 ::WritePrivateProfileString( _T("Options"), _T("Name"), m_strName, pApp->m_...
  • ShuSheng0007
  • ShuSheng0007
  • 2015年01月23日 09:21
  • 895
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:读写文件内容
举报原因:
原因补充:

(最多只允许输入30个字)