学习目标: 一、 理解Java IO系统中概念及分类,把握它的整体思想,能够灵活运用。
学习内容:
一、概念:Java中对文件的操作是以流的方式进行的。Java流是内存中一组有序数组序列。Java将数据从源(文件、内存、键盘、网络)读入到内存中,形成了流,然后将这些流写到另外的目的地(文件、内存、控制台、网络),之所以称为流,是因为这个数据序列在不同时刻所操作的是源的不同部分。
二、Java流的分类:
1、按输入方向分:分为输入流和输出流。
2、按处理数据的单位分:分为字节流和字符流,字节流读取的最小单位是一个字节(1byte=8bit),而字符流一次可以读取一个字符(1char=2byte)。
3、按功能不同分:分节点流和处理流,节点流是直接从一个源读写数据的流(这个流没有经过包装和修饰),处理流是在对节点流封装的基础上的一种流,FileInputStream是一个接点流,可以直接从文件读取数据,但是BufferedInputStream可以包装FileInputStream,使得其有缓冲功能。
除了这三种外,还有文件流、对象流、缓冲流等,其实这些类都是节点流和处理流的子分类。
三、流分类的关系
不管流的分类是多么复杂,其根源来自于四个基本的类。 字节流 字符流
输入流 InputStream Reader
输出流 OutputStream Writer
四、字节流和字符流的相互转换
1、从字节流到字符流:InputStreamReader、OutputStreamWriter类可以实现。
2、从字符流到字节流:可以从字符流中获取char[]数组,转换为String,然后调用String的API函数getBytes() 获取到byte[],然后就可以通过ByteArrayInputStream、ByteArrayOutputStream来实现到字节流的转换。
下面是关于IO的两个程序: package bytetest;
import java.io.*;
/**
* User: xiaohui
* Date: 2008-10-3022:44:04
*/
public class IOStreamTest {
public static void main(String[] args) throws IOException {
testBuffer();
}
public static void testIOStream() throws IOException {
InputStream inputStream = new FileInputStream("C:\\观沧海.txt");
OutputStream outputStream = new FileOutputStream("E:\\观沧海1.txt");
int x;
while ((x = inputStream.read()) != -1) {
outputStream.write(x);
}
inputStream.close();
outputStream.close();
System.out.println("文件复制成功!");
}
public static void testIOChar() throws IOException {
Reader reader = new FileReader("C:\\观沧海.txt");
Writer writer = new FileWriter("C:\\观沧海2.txt");
int x;
while ((x = reader.read()) != -1) {
writer.write(x);
}
reader.close();
writer.close();
System.out.println("文件复制成功!");
}
public static void testBuffer() throws IOException {
BufferedReader bufferedReader = new BufferedReader(new FileReader("C:\\观沧海.txt"));
BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter("C:\\观沧海3.java"));
String x;
while ((x = bufferedReader.readLine()) != null) {
bufferedWriter.write(x+"\n");
System.out.println(x);
}
bufferedWriter.flush();
bufferedWriter.close();
bufferedReader.close();
}
} 打印结果:
观沧海 东临碣石,以观沧海。
水何澹澹,山岛竦峙。
树木丛生,百草丰茂。
秋风萧瑟,洪波涌起。
日月之行,若出其中;
星汉灿烂,若出其里。
幸甚至哉,歌以咏志。
package bytetest;
import java.io.File;
/**
* User: xiaohui
* Date: 2008-10-3023:35:02
*/
public class TestFile {
public static void main(String[] args) {
File file = new File("C:\\aaa\\观沧海3.java");
System.out.println(File.pathSeparator);
System.out.println(File.pathSeparatorChar);
System.out.println(File.separator);
System.out.println(File.separatorChar);
String s = "C:"+File.separator+"观沧海.txt";
File file1 = new File(s);
System.out.println(file1.getPath());
file.delete();
String x = "AAA"+" "+"BBB"+"\n"+"DDD";
System.out.println(x);
File file3 = new File("C:\\aaa\\bbb");
file3.mkdir();
}
}
打印结果: ;
;
\
\
C:\观沧海.txt
AAA BBB
DDD
本文出自 “Java初学者” 博客,谢绝转载!