黑马程序员--IO(1)

本文介绍了Java中的IO流概念,包括字节流和字符流的分类,以及Input/OutputStream和Reader/Writer基类。还提到了FileReader和FileInputStream等具体实现,并引导读者了解如何在实际项目中应用IO流。
摘要由CSDN通过智能技术生成

------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------






IO(Input Output)流:


1.IO流用来处理设备之间的数据传输

2.Java对数据的操作是通过过流的方式

3.Java用于操作流的对象都在IO包中

4.流按操作数据分为两种:字节流和字符流

5.流按流向分为:输入流和输出流

注意:字节流通用,字符流基于字节流

IO流常用基类:

字节流的抽象基类:

InputStream ,OutputStream

字符流的抽象基类:

Reader,Writer

注意:由这四个类派生出来的子类名称都是以其父类名作为子类名的后缀。

例如:InputStream的子类FileInputStream.

           Reader的子类FileReader.

如何使用IO体系呢?

字符流:

package com.mth;

import java.io.FileWriter;
import java.io.IOException;

/**
 * 
 * @ClassName: FileWriterTest
 * @Description: FileWriter文件
 * @author mth 75100313@qq.com
 * @date 2014-2-17 下午07:20:11
 * 
 */
public class FileWriterTest {

	public static void main(String[] args) throws IOException {
		// 创建一个FileWriter对象 该对象一被初始化就必须要明确被操作的文件
		// 而且该文件会被创建在指定的目录下,如果该目录下已有同名文件将被覆盖
		// 其实改步就是在明确数据要存放的目的地
		FileWriter fWriter = new FileWriter("demo.txt");

		// 调用write方法,把字符串写到流中
		fWriter.write("aaaaaaccaa");

		// 刷新流对象缓冲中的数据 将数据刷到目的地中。
		// fWriter.flush();

		// 关闭流 但是关闭之前会刷新一次内部的缓冲中的数据
		// 将数据刷到目的地中
		// 和flush()区别:flash刷新后,流可以继续使用。close刷新后,会将流关闭
		fWriter.close();
	}

}


IO异常标准正常处理:

package com.mth;

import java.io.FileWriter;
import java.io.IOException;

/**
 * 
 * @ClassName: IOExceptionTest
 * @Description:IO异常处理
 * @author mth 75100313@qq.com
 * @date 2014-2-17 下午07:46:31
 * 
 */
public class IOExceptionTest {
	public static void main(String[] args) {
		// 在外面建立引用 在try内初始化
		FileWriter fWriter = null;
		try {
			fWriter = new FileWriter("mth.txt");
			fWriter.write("sasas");
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {// 一定会被执行的放在finally里面
			try {
				if (fWriter != null) {// 不等于空的时候才关闭
					fWriter.close();
				}
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
}


文件的续写:

package com.mth;

import java.io.FileWriter;
import java.io.IOException;

/**
 * 
 * @ClassName: FileAddData
 * @Description: 演示对已有文件的数据续写
 * @author mth 75100313@qq.com
 * @date 2014-2-17 下午07:59:59
 * 
 */
public class FileAddData {
	public static void main(String[] args) throws IOException {
		// 传递一个true参数,代表不覆盖已有的文件。 并在已有文件的末尾处进行数据的续写
		FileWriter fileWriter = new FileWriter("mth.txt", true);
		// 换行写/r/n
		fileWriter.write("\r\nmth");

		fileWriter.close();
	}
}


读文件(一次读一个字符):

package com.mth.FileReader;

import java.io.FileReader;
import java.io.IOException;

/**
 * 
 * @ClassName: FileReaderTest
 * @Description: FileReader读文件
 * @author mth 75100313@qq.com
 * @date 2014-2-17 下午08:13:51
 * 
 */
public class FileReaderTest {
	public static void main(String[] args) throws IOException {
		// 创建一个文件读取刘对象,和制定名称的文件想关联
		// 要保证该文件是已经存在的,如果不存在,会发生异常FileNotFoundException
		FileReader fileReader = new FileReader("mth.txt");

		// read()方法一次读一个字符,而且会自动往下读
		int ch = 0;
		// 读到最后一个-1的时候停止
		while ((ch = fileReader.read()) != -1) {
			System.out.print((char) ch);
		}
		fileReader.close();
	}
}

读文件(读一个存一个 一起打印出去):

package com.mth.FileReader;

import java.io.FileReader;
import java.io.IOException;

/**
 * 
 * @ClassName: FileReaderTest2
 * @Description: 通过字符数组进行读取
 * @author mth 75100313@qq.com
 * @date 2014-2-17 下午08:29:32
 * 
 */

public class FileReaderTest2 {
	public static void main(String[] args) throws IOException {
		FileReader fileReader = new FileReader("mth.txt");
		// 定义一个字符数组用于存储读到的字符
		char[] cbuf = new char[1024];
		// 该read(cbuf[])方法返回的是读到字符个数
		int num = 0;

		while ((num = fileReader.read(cbuf)) != -1) {
			System.out.println(new String(cbuf, 0, num));
		}
		fileReader.close();
	}
}


文本文件读取练习:

package com.mth.FileReader;

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

/**
 * 
 * @ClassName: FileReaderJava
 * @Description: 读取一个.java文件,并打印在控制台上
 * @author mth 75100313@qq.com
 * @date 2014-2-17 下午09:01:14
 * 
 */
public class FileReaderJava {
	public static void main(String[] args) throws IOException {
		FileReader fReader = new FileReader("Test1.java");
		char[] cbuf = new char[1024];
		int ch = 0;
		while ((ch = fReader.read(cbuf)) != -1) {
			System.out.println(new String(cbuf, 0, ch));
		}
		fReader.close();
	}
}


将C盘文件复制到D盘

package com.mth.copy;

import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

/**
 * 
 * @ClassName: CopyFile
 * @Description: 将c盘一个文本文件复制到d盘
 * @author mth 75100313@qq.com
 * @date 2014-2-17 下午09:06:35 
 * 步骤:   1在D盘创建一个文件,用于存储c盘文件中的数据 
 * 	     2 定义读取流和c盘文件关联
 *       3通过不断的读写完成数据存储 
 *       4关闭资源
 */
public class CopyFile {

	public static void copy() throws Exception {

		// 创建目的地
		FileWriter fileWriter = new FileWriter("Test1_copy.java");

		// 与已有文件关联
		FileReader fileReader = new FileReader("Test1.java");
		int ch = 0;
		char[] array = new char[1024];
		while ((ch = fileReader.read(array)) != -1) {
			fileWriter.write(array, 0, ch);

		}
		fileWriter.close();
		fileReader.close();
	}

	public static void main(String[] args) throws Exception {
		copy();
	}

}




------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值