------- <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();
}
}
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();
}
}
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>、期待与您交流! ----------