IO流类(1)
InputStream字节输入流
AudioInputStream
音频输入流是具有指定音频格式和长度的输入流。长度用示例帧表示,不用字节表示。提供几种方法,用于从流读取一定数量的字节,或未指定数量的字节。音频输入流跟踪所读取的最后一个字节。可以跳过任意数量的字节以到达稍后的读取位置。音频输入流可支持标记。设置标记时,会记住当前位置,以便可以稍后返回到该位置。
ByteArrayInputStream
ByteArrayInputStream 包含一个内部缓冲区,该缓冲区包含从流中读取的字节。内部计数器跟踪 read 方法要提供的下一个字节。关闭 ByteArrayInputStream 无效。此类中的方法在关闭此流后仍可被调用,而不会产生任何 IOException。
FileInputStream
FileInputStream 从文件系统中的某个文件中获得输入字节。哪些文件可用取决于主机环境。FileInputStream 用于读取诸如图像数据之类的原始字节流。要读取字符流,请考虑使用 FileReader。
FilterInputStream
FilterInputStream 包含其他一些输入流,它将这些流用作其基本数据源,它可以直接传输数据或提供一些额外的功能。FilterInputStream 类本身只是简单地重写那些将所有请求传递给所包含输入流的 InputStream 的所有方法。FilterInputStream 的子类可进一步重写这些方法中的一些方法,并且还可以提供一些额外的方法和字段。
ObjectInputStream
ObjectInputStream 对以前使用 ObjectOutputStream 写入的基本数据和对象进行反序列化。
只有支持 java.io.Serializable 或 java.io.Externalizable 接口的对象才能从流读取。
PipedInputStream
管道输入流应该连接到管道输出流;管道输入流提供要写入管道输出流的所有数据字节。通常,数据由某个线程从 PipedInputStream 对象读取,并由其他线程将其写入到相应的 PipedOutputStream。不建议对这两个对象尝试使用单个线程,因为这样可能死锁线程。管道输入流包含一个缓冲区,可在缓冲区限定的范围内将读操作和写操作分离开。如果向连接管道输出流提供数据字节的线程不再存在,则认为该管道已损坏。
SequenceInputStream
SequenceInputStream表示其他输入流的逻辑级联。 它从一个有序的输入流集合开始,从第一个读取到文件的结尾,然后从第二个文件读取,依此类推,直到最后一个输入流达到文件的结尾。
StringBufferInputStream
已弃用此类不会将字符正确转换为字节。 从JDK 1.1开始,从字符串创建流的首选方法是通过StringReader类。
该类允许应用程序创建一个输入流,其中读取的字节由字符串的内容提供。 应用程序还可以通过使用ByteArrayInputStream从字节数组读取字节。只有字符串中每个字符的低8位被该类使用。
InputStream
org.omg.CORBA.portable.InputStream(略)
InputStream是用于从CDR元数据流读取IDL类型的Java API。 ORB使用这些方法解组IDL类型,并从Anys中提取IDL类型。
写个demo玩玩
package xxl.io.test;
import java.io.*;
import java.util.Vector;
public class Test7 {
public static void main(String[] args) {
InputStream inputStream = null;
InputStream inputStream2= null;
InputStream inputStream3 = null;
BufferedOutputStream bos=null;
try {
inputStream=new FileInputStream(new File("E:/CloudMusic/打上花火.mp3"));
inputStream2=new FileInputStream(new File("E:/CloudMusic/童话镇.mp3"));
inputStream3=new FileInputStream(new File("E:/CloudMusic/水面の満月.mp3"));
Vector vector=new Vector<InputStream>();
vector.addElement(inputStream3);
vector.addElement(inputStream2);
vector.addElement(inputStream);
SequenceInputStream stream=new SequenceInputStream(vector.elements());
bos = new BufferedOutputStream(
new FileOutputStream("E:/Test/Test2/_0048.mp3"));
byte[] bytes=new byte[1024];
int len=0;
while((len=stream.read(bytes))!=-1){
bos.write(bytes,0,len);
}
bos.flush();
} catch (IOException e) {
e.printStackTrace();
}finally {
close(inputStream);
close(inputStream2);
close(inputStream3);
if (bos!=null){
try {
bos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
private static void close(InputStream inputStream) {
if (inputStream!=null){
try {
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}