Java 之 I/O流

1.流

  a.分类:①字节流:InputStream、OutputStream

      ②字符流:Reader、Writer

  b.选择:①判断是 输入 还是 输出 (站在程序的立场上)

      ②判断是 字节 还是 字符 (决定粗细)

  c.注意:①字节管道是最根本的

      ②字符管道专门传输文本数据

  c.应用:①序列化

      ②反序列化

2.文件拷贝——最重要的一段手工书写的代码

package com.lovo.test;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream; public class TestStream { public static void main(String[] args) { //功能:将D:/test.avi 拷贝到 F:/wudi.avi
FileInputStream fis = null;
FileOutputStream fos = null;
try {
//1、建立管道
fis = new FileInputStream("D:/test.avi");
fos = new FileOutputStream("F:/wudi.avi"); //2、操作管道
//方法一:
// int b = 0;
// while((b = fis.read()) != -1){
// fos.write(b);
// } //方法二:
byte[] b = new byte[1024];
int length = 0;//记录读取了多少个有效字节数
while((length = fis.read(b)) != -1){
fos.write(b,0,length);
fos.flush();//强制刷出缓冲区的内容
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally{
//3、关闭管道
if(fis != null){
try {
fis.close();
} catch (IOException e) {
// TODO Auto-generated block
e.printStackTrace();
}
}
if(fos != null){
try {
fos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}

3.序列化与反序列化

  a.定义:①序列化:将内存中的对象以二进制流的形式输出

      ②反序列化:将输入的二进制对象流转换为内存中的对象 (第二种产生对象的方式)

  b.Serializable关键字:

    ①定义:可序列化接口

    ②作用:标记性接口,只有实现了Serializable接口的类才能被序列化

    ③注意:集合对象都实现了接口Serializable,也可以进行直接进行序列化和反序列化

  c.transient关键字:

    transient关键字修饰的属性,其值不参与序列化

4.File 类

  a.作用:来表示操作系统的文件或文件夹对象

  b.方法:

    ①申明:

File f = new File("F:/dddd.data");

    ②其他:

String path1 = file.getAbsolutePath();        //获取绝对路径

String path2 = file.getPath();        //获取相对路径

long space = file.length();        //获取文件大小

long time = file.lastModified();        //最后修改时间(毫秒数)

System.out.println(file.isHidden());        //判断是否是隐藏文件

System.out.println(file.canWrite());        //判断是否是能被修改

System.out.println(dir.isFile());        //判断是否是文件

System.out.println(file.isDirectory());        //判断是否是文件夹

  c.文件分隔符——File.pathSeparator

String path = "D:" + File.pathSeparator +"ffdfd" + File.pathSeparator + "fdfdf";

  d.文件夹对象的常用方法:

    ①得到文件夹下面的所有子文件或子文件夹的名字

String[] subFileNames = dir.list();

    ②得到文件夹下面的所有子文件或子文件夹的File对象

File[] subFiles = dir.listFiles();
上一篇:python基础语法(变量与数据类型)


下一篇:Laravel 5 : Call to undefined function Illuminate\Foundation\Bootstrap\mb_internal_encoding()