如果已经读取到末尾,就会返回 -1 ,所以 -1 可以用来表示读取完毕。
需要注意的是真正读取的方法是一个 native 方法。
private native int readBytes(byte b[], int off, int len) throws IOException;
上面定义了一个存放临时缓存的 byte 变量。因为该文件没有超过 1024 直接就读取出来了。 如果把1024 写成 100 并在循环中打印返回数据, 你将会看到区别。
运行效果:
AudioInputStream
音频输入流,可以操作指定音频格式和音频长度的输入流。长度使用样本帧而不是字节表示。该类中的方法给出了几种方法从流中读取一定数量的字节或未指定数量的字节。
并且给出了一个操作类 javax.sound.sampled.AudioSystem 来自模块 java.desktop 。
这里只给出该类的基本使用方法, 不延伸 AudioSystem 的使用方法。
定义如下:
public class AudioInputStream extends InputStream
需要先准备一个 wav 的文件, 我这里随便搜索一下系统里面找个 wav 的音频文件。
D:\Program\BaiduNetdisk\sounds\1.wav
演示案例:
import java.io.File;import java.io.FileInputStream;import java.io.InputStream;import javax.sound.sampled.AudioInputStream;import javax.sound.sampled.AudioSystem;import javax.sound.sampled.Clip;public class Input02 { public static void main(String[] args) { File file = new File("D:\\Program\\BaiduNetdisk\\sounds\\1.wav"); try (AudioInputStream stream = AudioSystem.getAudioInputStream(file)) { Clip clip = AudioSystem.getClip(); clip.open(stream); clip.start(); // 睡眠一会让 clip 播放音频文件。 Thread.sleep(500); } catch (Exception ex) { System.out.println(ex.getMessage()); } }}
使用命名执行,注意要打开你的音响,要不然也听不到,听不出来效果。
javac -encoding utf-8 Input02.java && java Input02
ByteArrayInputStream
ByteArrayInputStream 包含一个内部缓冲区,其中包含可以从流中读取的字节。 一个内部计数器跟踪由 read 方法提供的下一个字节。 关闭 ByteArrayInputStream 没有任何效果。 可以在关闭流后调用此类中的方法,而不会生成 IOException。
public class ByteArrayInputStream extends InputStream
构造函数有:
直接演示案例:
byte[] buffer = new byte[] { 0, 2, 4, 6, 8, 1, 3, 5, 7, 9 };try (ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(buffer);) { System.out.print("Buffer 内容: "); int i; while (byteArrayInputStream.available() > 0) { i = byteArrayInputStream.read(); System.out.print(i + " "); }} catch (IOException ex) { System.out.println(ex.getMessage());}
FilterInputStream
FilterInputStream 包含一些其他输入流,它用作其基本数据源,可能沿途转换数据或提供附加功能。
public class FilterInputStream extends InputStream
演示代码如下:
ObjectInputStream
ObjectInputStream 反序列化之前使用 ObjectOutputStream 写入的原始数据和对象。
该类的定义:
public class ObjectInputStream extends InputStream implements ObjectInput, ObjectStreamConstants
本文地址:网络百科频道 https://www.eeeoo.cn/wangluo/903043_2.html,嗨游网一个专业手游免费下载攻略知识分享平台,本站部分内容来自网络分享,不对内容负责,如有涉及到您的权益,请联系我们删除,谢谢!