ByteArrayInputStream是向内存中写入;ByteArrayIoutPutStream 实行内存中读取;可以的,但是我们需要的是读出音频;import java.io.FileInputStream;
import sun.audio.AudioStream;
public class MusicPlay extends Thread{
private FileInputStream music;//声明文件流对象
private static final int SleepTime = 1500;
int i;
public boolean play = true; private AudioStream play_music;//声明音频流对象
/*
*构造方法,线程启动
*/
public MusicPlay(){
this.start();
} /*
*线程运行
*/
public void run(){ //循环播放
while(play){
try{
i = (int)Math.floor(Math.random()*2);
music=new FileInputStream("./sound/bubble"+i+".wav");//创建文件流对象
//music=new FileInputStream("../windmusic.wav");
play_music=new sun.audio.AudioStream(music);//创建音频流对象
}catch(Exception e){System.out.println(e);} sun.audio.AudioPlayer.player.start(play_music);//开始播放
try{
if(i == 0)
Thread.sleep(6000);//音频播放时间
else
Thread.sleep(3000);
}catch(Exception e){System.out.println(e);}
}
return;
}
}
楼主请记住,文件(流)读写是以“程序”作为参照系——因此Input是把内容读入到程序中(因此Input是读入);Output是从程序写入内存。记忆诀窍:Input:输入(读入),Output输出(写出)。 第二个问题,简单给出一个读写exe的例子:
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
public class TT { public static void main(String[] args) throws Exception {
FileInputStream fs = new FileInputStream("D:\\QQ\\Bin\\QQ.exe");
byte[]bytes= new byte[fs.available()];
fs.read(bytes);
fs.close();
ByteArrayOutputStream bout= new ByteArrayOutputStream();
bout.write(bytes); //写入内存
bout.close(); //关闭后写入内存了
System.out.println("OK");
}
}
Input是读,Output是写
机器上的所有东西都是二进制存储,所以都能以byte流方式读写