IO流的概述和分类
一切数据(文本、图片、视频等)在储存时,,都是以二进制的形式进行保存的,都是一个个字节。那么传输时同样如此。所以,字节流可以传输任意文件数据。在操作流的时候,我们要时刻明确,无论使用什么流对象,底层都为二进制数据。
字节流
字节输出流的基本使用
public class Demo01OutputStream {
public static void main(String[] args) throws IOException {
FileOutputStream fos = new FileOutputStream("day14\\a.txt");
fos.write(97);
fos.close();
}
}
字节输出流写多个字节的方法
public class Demo02OutputStream {
public static void main(String[] args) throws IOException {
FileOutputStream fos = new FileOutputStream(new File("day14\\b.txt"));
byte[] bytes = {65,66,67,68,69};
fos.write(bytes);
byte[] bytes2 = {49,48,48};
fos.write(bytes2);
fos.write(bytes,1,3);
byte[] bytes3 = "中国".getBytes();
System.out.println(Arrays.toString(bytes3));
fos.write(bytes3);
fos.close();
}
}
字节输出流的续写和换行
换行:使用换行符号 windows: \r\n linux: /n mac: /r 从Mac OS X版本开始与linux统一
public class Demo03OutputStream {
public static void main(String[] args) throws IOException {
FileOutputStream fos = new FileOutputStream("day14\\c.txt",true);
for (int i = 1; i <= 10; i++) {
fos.write(("你好"+i+"\r\n").getBytes());
}
fos.close();
}
}
上边介绍了字节输出流,接下来介绍字节输入流
字节输入流的介绍
字节输入流的基本使用:一次读取一个字节
public class Demo01InputStream {
public static void main(String[] args) throws IOException {
FileInputStream fis = new FileInputStream("day15\\a.txt");
int len = 0;
while ((len = fis.read())!=-1){
System.out.print((char)len);
}
fis.close();
}
}
使用字节输入流一次读取多个字节
public class Demo02InputStream {
public static void main(String[] args) throws IOException {
FileInputStream fis = new FileInputStream("day15\\b.txt");
byte[] bytes = new byte[1024];
int len = 0;
while ((len = fis.read(bytes))!=-1){
System.out.println(new String(bytes,0,len));
}
fis.close();
}
}
文件复制(重点)
public class Demo01CopyFile {
public static void main(String[] args) throws IOException {
long s = System.currentTimeMillis();
FileInputStream fis = new FileInputStream("c:\\1.exe");
FileOutputStream fos = new FileOutputStream("d:\\1.exe");
byte[] bytes = new byte[1024*500];
int len = 0;
while ((len = fis.read(bytes))!=-1){
fos.write(bytes,0,len);
}
fos.close();
fis.close();
long e = System.currentTimeMillis();
System.out.println("复制文件共耗时:"+(e-s)+"毫秒!");
}
}
|