需注意gb2312和GBK都是兼容ascii编码的。也就是说gbk包含了ascii中的字符映射。
我觉得这个应该是1
package stream;
import java.io.*;
public class MyStream {
public static void main(String[] args) throws Exception {
writer001();
// read001();
// read002();
// read003();
// copy001();
long sta = System.currentTimeMillis();
// copy002();
copy003();
long end = System.currentTimeMillis();
System.out.println(end-sta+"毫秒");
}
private static void copy003() throws Exception {
MyBufferStream myBufferStream = new MyBufferStream(new FileInputStream("d:/清弄-叙世.mp3"));
BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream("d:/2.mp3"));
int res = 0;
while ((res=myBufferStream.myread())!=-1){
out.write(res);
}
myBufferStream.close();
out.close();
}
private static void copy002() throws Exception {
BufferedInputStream inputStream = new BufferedInputStream(new FileInputStream("d:/清弄-叙世.mp3"));
BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream("d:/1.mp3"));
int res = 0;
while ((res=inputStream.read())!=-1){
out.write(res);
}
inputStream.close();
out.close();
}
private static void copy001() throws Exception {
FileInputStream in = new FileInputStream("d:/1.jpg");
FileOutputStream out = new FileOutputStream("d:/jingse.jpg");
byte[] arr = new byte[1234];
int res = 0;
while ((res = in.read(arr)) != -1) {
out.write(arr);
}
in.close();
out.close();
}
private static void read003() throws Exception {
FileInputStream in = new FileInputStream("st.txt");
byte[] arr = new byte[in.available()];
in.read(arr);
System.out.println(new String(arr));
}
private static void read002() throws Exception {
FileInputStream in = new FileInputStream("st.txt");
byte[] arr = new byte[1234];
int res =0;
while ((res = in.read(arr)) != -1) {
System.out.println(new String(arr,0,res));
}
}
private static void writer001() throws Exception {
FileOutputStream out = new FileOutputStream("st.txt",true);
out.write("alsdkjflksdjlffsldkfj".getBytes());
out.close();
}
private static void read001() throws Exception {
FileInputStream inputStream = new FileInputStream("st.txt");
int res = 0;
while ((res = inputStream.read()) != -1) {
System.out.println((char)res);
}
inputStream.close();
}
}
字节的缓冲区 返回int
package stream;
import java.io.IOException;
import java.io.InputStream;
public class MyBufferStream {
private InputStream inputStream;
private byte[] arr = new byte[1234];
int position = 0;
int count = 0;
public MyBufferStream(InputStream inputStream) {
this.inputStream = inputStream;
}
public int myread() throws IOException {
if (count == 0) {
count = inputStream.read(arr);
if (count < 0) {
return -1;
}
position = 0;
}
count--;
byte b = arr[position];
position++;
return b&255;//-1相关的问题
}
public void close() throws IOException {
inputStream.close();
}
}