------- 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培训、期待与您交流! ----------