对java文件内容的操作 可读/可写 output/input (输入可写/输出可读)以设备角度 简称:IO 被IO传输的数据称为流(IO流) 流指被传输的数据
按数据的流向:以内存角度 输入流:读数据? 输出流:写数据?
数据类型的分类: 字节流: 字节输入流 字节输出流 字符流: 字符输出流 字符输入流
字节流: InputStream:抽象类 public abstract class InputStreamextends InputStream; 所有输入流类的超类
OutputStream:抽象类 所有输出流类的超类 子类:FileOutputStream
字符编码表 计算机存储二进制,而我们生活中的数据太多了,如何让生活中各种各样的数据和计算机存储的二进制对应起来呢? 在这种情况下,美国人整了一个码表。ASCII表 能识别中文的:GBK UTF-8 解码和编码 解码:十进制—数据 编码:数据—十进制
abstract int read() 从输入流中读取数据的下一个字节。 实现了此类的子类必须实现read() 方法 文件的拷贝:
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
public class 拷贝 {
public static void main(String[] args) throws IOException {
long s =System.currentTimeMillis();
InputStream is = new FileInputStream(new File("D:\\a.mp4"));
byte b1 [] = new byte[1024*1024];
FileOutputStream is2 = new FileOutputStream(new File("D:\\WeGame\\Download\\b.mp4"));
byte b2[] = b1;
int a = 0;
while ((a =is.read(b1))!=-1){
is2.write(b2,0,a);
}
is.close();
is2.close();
long e =System.currentTimeMillis();
System.out.println((e-s)/1000);
}
}
import java.io.*;
public class 拷贝用数组 {
public static void main(String[] args) throws Exception{
long start = System.currentTimeMillis();
InputStream is = new FileInputStream(new File("D:\\a.mp4"));
OutputStream os = new FileOutputStream("D:\\WeGame\\Download\\b.mp4",true);
byte[] arr = new byte[1024];
int a = 0;
while ((a =is.read(arr))!=-1){
os.write(arr,0,a);
}
os.close();
is.close();
long end = System.currentTimeMillis();
System.out.println(end -start);
}
}
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
public class 拷贝不用数组 {
public static void main(String[] args) throws IOException {
long start =System.currentTimeMillis();
InputStream is = new FileInputStream(new File("D:\\a.mp4"));
OutputStream os = new FileOutputStream("D:\\WeGame\\Download\\b.mp4",true);
int a=0;
while((a=is.read())!=-1) {
os.write(a);
}
os.close();
is.close();
long end =System.currentTimeMillis();
System.out.println((end-start)/1000);
}
}
|