您的位置:首页 > 职场人生

黑马程序员_java_IO

2013-11-29 01:48 363 查看
------- android培训java培训、期待与您交流! ----------
JAVA中对于数据的输入/输出操作以“流(Stream)”的方式进行,J2 SDK提供了各种各样的“流”类,用以获取不同种类的数据,程序通过标准的方法输入输出数据。

输入/输出流的分类:

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

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

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

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

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

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

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

J2SDK所提供的所有流类型位于JAVA.IO的包内,都分别继承了以下四种抽象流类型:   <
4000
/p>
 字节流字符流
输入流: 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培训、期待与您交流! ----------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: