IO流的分类
InputStream | OutputStream | Reader | Writer | 抽象类 | |
---|---|---|---|---|---|
FileInputStream | FileOutputStream | FileReader | FileWriter | 节点流 | 子类 |
BufferedInputStream | BufferedOutputStream | BufferedReader | BufferedWriter | 处理流 | 缓冲流\高效流 |
InputStreamReader | OutputStream | 转换流 | |||
ObjectInputStream | ObjectOutStream | 对象流 | |||
RandomAccessFile | RandomAccessFile | 随机访问流 | |||
System.in | System.out | 标准流 | |||
PrintStream | 打印流 | ||||
输入流 | 输出流 | 输入流 | 输出流 | ||
字符流 | 字符流 | 字节流 | 字节流 |
缓冲流
@Test
public void testBufferedStream(){
InputStream is = null;
OutputStream os = null;
BufferedInput Stream bis = null;
BufferedOutputStream bos = null;
Try{
is = new FileInputStream("Users/homework.1.mp4");
os = new FileOutputStream("Users/homework.2.mp4");
bis = new bufferedInputStream(is,1024*1024*100);
bos = new BufferedOutputStream(os);
Byte[] b = new byte[1024*1024*10];
int len;
while((len = bis.read(b))!= -1){
bos.write(b,0,len);
//清空缓存
bos.flush();
}
}catch(Exception e){
e.getSuppressed();
}
转换流
@Test
public void testInputStreamReader() throws IOException{
InputStream is = new File InputStream("Users/homework/1.png");
OutPutStream os =new FileOutputStream("Users/homework/2.png");
//转为字符流
InputStreamReader isr = new InputStreamReader(is,"iso-8859-1");
OutputStreamWriter osw = new OutputStreamWriter(os,"iso-8859-1");
//在创建缓冲流
BufferedReader br = new BufferedReader(isr);
BufferedWriter bw = new BufferedWriter(osw);
char[] c = new char[1024];
int len;
while((len = br.read(c))!= -1){
bw.write(c,0,len);
bw.flush();
}
bw.close();
osw.close();
os.close();
is.close();
}
随机访问流
@Test
public void testRandomAccessFile() thows IOException{
RandomAccessFile raf = new RandomAccessFile("Users/homework/1.txt","rw");
long length = raf.length();
raf.seek(length);
raf.write("o".getBytes());
raf.close();
}
标准流
@Test
public void testSystemIn() throws Exception{
InputStream is = new FileInputStream("Users/homework/1.txt");
System.setIn(is);
Scanner s new Scanner(System.in);
int i = s.nextint();
String str1 = s.nextLine();
int j = s.nextInt();
System.out.print(i+":"+str1+":"+j);
System.out.println("=====");
}
@Test
public void testSystemOut() throws IOException{
OutputStream os = new FileOutStream("Users/homework/1.txt");
PrintStream ps = new PrintStream(os);
System.setOut(ps);
System.out.println("abcd");
}
只是作为一个参考分享。