黑马程序员_java_IO


------- android培训java培训、期待与您交流! ----------

JAVA中对于数据的输入/输出操作以“流(Stream)”的方式进行,J2 SDK提供了各种各样的“流”类,用以获取不同种类的数据,程序通过标准的方法输入输出数据。

输入/输出流的分类:

Java.IO包中定义了多个流类型(类或抽象类)来实现输入/输出的功能;可以从不同的角度对其进行分流:

1.  按数据流的方向不同,可以分为输入流和输出流;

从文件中读数据叫输入流,向文件或控制台打印数据叫输出流!

2.  按处理数据单位不同,可以分为字节流和字符流;

按照字节0101010一个一个字节来读的流,最原始的流叫做字节流;一个字符一个字符的往外读叫做字符流!

3.  按功能不同,可以分为节点流和处理流;

节点流可以从一个特定的数据源读写数据;处理流是“连接”在已存在的流之上,通过对数据的处理为程序提供更为强大的读写功能!

J2SDK所提供的所有流类型位于JAVA.IO的包内,都分别继承了以下四种抽象流类型:   

 字节流字符流
输入流: InputStream Reader
输出流: OutputStream Writer

OutputStream:你就在InputStream基础上反着想就ok了

OutputStream 功能介绍
输出数据
voidwrite(int b)往流中写一个字节b
voidwrite(byte b[])往流中写一个字节数组b
voidwrite(byte b[],int off,int len)把字节数组b中从下标off开始,长度为len的字节写入流中
flush() 刷空输出流,并输出所有被缓存的字节 由于某些流支持缓存功能,该方法将把缓存中所有内容强制输出到流中。
close() 关闭流流操作完毕后必须关闭。

InputStream 功能介绍

从流中读取数据

intread() 读取一个字节,返回值为所读得字节
intread(byte b[]) 读取多个字节,放置到字节数组b中,通常读取的字节数量为b的长度,返回值为实际独取的字节的数量。
intread(byte b[] ,int off,int len)读取len个字节,放置到以下标off开始字节数组b中,返回值为实际读取的字节的数量。
intavailable()返回值为流中尚未读取的字节的数量。
longskip(long n);读指针跳过n个字节不读,返回值为实际跳过的字节数量
close() 关闭流流操作完毕后必须关闭
voidmark(int readlimit)记录当前指针的所在位置.readlimit表示读指针读出的readlimit个字节后所标记的指针位置才实效。
voidreset() 把读指针重新指向用mark方法所记录的位置
boolean markSupported() 当前的流是否支持读指针的记录功能。

字节流:
字节流包含两个顶层抽象类:InputStream和OutputStream。
1:字节流的两个顶层类是抽象类,分别是:InputStream和OutputStream。
2:每个抽象类都有子类来实现具体的功能,处理不同的设备的输入和输出。
下面简单介绍字节流的几个常用子类:
字节流:功能简单介绍
DataInputStream :包含了读取Java标准数据类型的输入流
DataOutputStream:包含了写Java标准数据类型的输出流
ByteArrayInputStream:从字节数组读取的输入流
ByteArrayOutputStream:写入字节数组的输出流
FileInputStream :从文件读入的输入流
FileOutputStream :写入文件的输出流
PrintStream :包含最常见的Print()和Println()的输出流
PushbackInputStream:返回一个字节到输入流,主要用于编译器的实现
PipedInputStream:输出管道
PipedOutputStream:输入管道
SequenceInputStream:将n个输入流联合起来,一个接一个按一定顺序读取
RandomAccessFile:随机访问文件
BufferInputStream:缓冲输入流
BufferOutputStream:缓冲输出流
FilterInputStream:实现了InputStream Interface
FilterOutputStream :实现了OutputStream Interface
InputStream:抽象类,描述流的输入
OutputStream:抽象类,描述流的输出

字符流

BufferReader(处理流)     

CharArrayReader(节点流)

InputStreamReader(处理流)

FilterReader(处理流)

PipedReader(节点流)

StringReader(节点流)

注:继承自Reader的流都是用于向程序中输入数据,且数据单位为字符(两个字节)

BufferWriter(处理流)     

CharArrayWriter(节点流)

InputStreamWriter(处理流)

FilterWriter(处理流)

PipedWriter(节点流)

StringWriter(节点流)

注:继承自Writer的流都是用于向程序中输出数据,且数据单位为字符(两个字节)

示例代码:

FileInpputStream和FileOutputStream:

package cn.itcast.io;

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

public class FileStreamTest {

	public static void main(String[] args) {
		int b = 0;
		FileInputStream in = null;
		FileOutputStream out = null;
		try {
			in = new FileInputStream("F:\\JAVA\\java.txt");
			out = new FileOutputStream("F:\\JAVA\\java1.txt");
			while((b = in.read()) != -1) {
				out.write(b);
			}
			in.close();
			out.close();
		} catch (FileNotFoundException e) {
			System.out.println("找不到文件");
			e.printStackTrace();
		} catch (IOException e) {
			System.out.println("文件复制错误");
			e.printStackTrace();
		}
		System.out.println("文件已复制");
	}

}

FileReader和FileWriter:

package cn.itcast.io;

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

public class FileReaderWriterTest {

	public static void main(String[] args) {
		FileReader fr = null;
		FileWriter fw = null;
		int c = 0;
		try {
			fr = new FileReader("F:\\JAVA\\java.txt");
			fw = new FileWriter("F:\\JAVA\\java1.txt");
			while((c = fr.read()) != -1) {
				System.out.println((char)c);
				fw.write(c);
			}
			fr.close();
			fw.close();
		} catch (FileNotFoundException e) {
			System.out.println("文件找不到");
			e.printStackTrace();
		} catch (IOException e) {
			System.out.println("文件复制错误");
		}
		System.out.println("文件已复制");
	}

}

BufferedReader和BufferedWriter:

package cn.itcast.io;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class BufferWriterTest {

	public static void main(String[] args) {
		
		BufferedWriter bw = null;
		BufferedReader br = null;
		String s = null;
		try {
			br = new BufferedReader(new FileReader("F:\\JAVA\\java1.txt"));
			bw = new BufferedWriter(new FileWriter("F:\\JAVA\\java1.txt"));
			for(int i = 1; i<100; i++) {
				s = String.valueOf(Math.random());
				bw.write(s);
				bw.newLine();
			}
			bw.flush();
			while((s = br.readLine()) != null) {
				System.out.println(s);
			}
			
			bw.close();
			br.close();
		} catch (FileNotFoundException e) {
			System.out.println("找不到文件");
			e.printStackTrace();
		} catch (IOException e) {
			System.out.println("文件错误");
		}
	}
}

------- android培训java培训、期待与您交流! ----------
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值