目录
I-O流
.close方法
package demo211207;
import java.util.Scanner;
//GC=自动垃圾回收机制
//垃圾回收算法
//垃圾回收器//IO流
//I=input
//O=output
//流
public class TestA {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String line = scan.nextLine();// 控制台输入
System.out.println(line);
scan.close();// 关闭
TestA ta = new TestA();
ta = null;
}
}
package demo211207;
常用方法
import java.io.File;
import java.io.IOException;
public class TestB {
public static void main(String[] args) throws IOException {
File file;// 文件系统
// window \
// linux /
System.out.println(File.separatorChar);// 文件分隔符
// 绝对路径
// windows=盘符开始,如D:\\test\\temp.txt
File f1 = new File("D:\\test\\temp.txt");// String--文件路径
System.out.println(f1.getAbsolutePath());
System.out.println(f1.getPath());
// 相对路径
// 相对于某个位置的路径
File f2 = new File("../temp.txt");// ./当前目录 ../上一级目录
System.out.println(f2.getAbsolutePath());
System.out.println(f2.getPath());
File f3 = new File("D:\\test\\temp111.txt");
File f4 = new File("D:\\test");
System.out.println(f3.exists());//判断是否存在,可能不存在
System.out.println(f3.isFile());//判断是否文件,也许可能是文件或者目录
System.out.println(f4.isDirectory());//检查一个对象是否是文件夹
System.out.println(f3.isHidden());//判断是否为隐藏文件
f3.createNewFile();
f4.mkdir();
// f3.renameTo();
// f3.delete();//不放入回收站
// f3.deleteOnExit()
String[] list = f4.list();//获取当前目录下所有文件
File[] files = f4.listFiles();//File类型的数组,返回的是该目录中的文件和目录
long len = f3.length();// 文件大小
String p = f3.getParent();//getParent()父路径
long d = f3.lastModified();//返回这个抽象路径名所表示的文件最后一次修改的时间。
// File.listRoots();
}
}
常用方法:
boolean exists() //表示当前路径是否存在
boolean isFile() //判断当前路劲是否是文件
boolean isDirectory() //判断当前是否为目录
boolean isHidden() //判断是否是隐藏文件
void deleteOnExit() //在程序退出时删除
boolean delete() //直接删除
boolean createNewFile() //创建新文件 在当前文件不存在的情况下,创建成功返回true,文件存在返回false
file.mkdir(); //创建目录
file.getName();// 获取文件名
file.getAbsolutePath();//获取绝对路径
file.list(); //获取当前目录下所有文件
String[] list(FilenameFilter filter) //获取过滤后的目录或文件
ackage demo211207;
字符流的写和读
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
//流-基本使用-核心步骤
//1-创建流
//2-读入/写出
//3-关闭
//类型-分类
//字节流(OutputStream/InputStream)--以字节的形式,绝大部分数据文件,图片音频视频
//字符流(Writer/Reader)--以字符的形式,对字符文本类型的数据进行操作//方向-流向
//输入
//输出
写
public class TestC {
public static void main(String[] args) throws IOException {
File file = new File("D:\\test\\temp111.txt");
FileWriter fw = new FileWriter(file);
// FileWriter fw = new FileWriter("D:\\test\\temp111.txt");
fw.write("abcdefg");
fw.close();
fw = null;
}
读
package demo211207;
import java.io.BufferedReader;
import java.io.Closeable;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.Arrays;
//终端流-直接与目标终端打交道
//拼接流-直接与流打交道(构造方法可以看出来)
//流向一致=拼接流与终端流
public class TestD {
public static void main(String[] args) throws IOException {
File file = new File("D:\\test\\temp111.txt");
FileReader fr = new FileReader(file);
BufferedReader br = new BufferedReader(fr);// 缓冲流、缓存流
String line = br.readLine();
System.out.println(line);
br.close();
fr.close();
file.canExecute();
br = null;
fr = null;
file = null;
}
public static void main1(String[] args) throws IOException {
File file = new File("D:\\test\\temp111.txt");
FileReader fr = new FileReader(file);
// System.out.println(Arrays.toString(cubf));
char[] cubf = new char[100];// 缓冲/缓存区
int len = fr.read(cubf);
// System.out.println(Arrays.toString(cubf));
// System.out.println(len);
cubf = Arrays.copyOf(cubf, len);
// System.out.println(Arrays.toString(cubf));
String line = new String(cubf);
System.out.println(line);
fr.close();
fr = null;
}
}
字节流的写和读
package demo211207;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Arrays;
import java.util.UUID;
写
public class TestE {
public static void main(String[] args) throws IOException {
FileInputStream fis = new FileInputStream("D:\\test\\temp111.txt");
byte[] data = new byte[1024];// 缓冲区
int len = fis.read(data);
data = Arrays.copyOf(data, len);
System.out.println(new String(data));
fis.close();
fis = null;
}
读
public static void main2(String[] args) throws IOException {
FileOutputStream fos = new FileOutputStream("D:\\test\\temp111.txt");
String s = "123456789";
byte[] b = s.getBytes();
fos.write(b);
fos.close();
fos = null;
}
}
package demo211207;
图片复制例题
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Arrays;
//1.复制a文件夹下一张图片到b文件夹下
//2.复制a文件夹所有张图片到b文件夹下
public class TestF {
public static void main(String[] args) throws IOException {
File fileA = new File("D:\\a");
File fileB = new File("D:\\b");
File fileC = new File("D:\\a\\318393.jpg");
copyAll(fileA, fileB);
copy(fileC, fileB);
}
public static void copyAll(File in, File out) throws IOException {
File[] file = in.listFiles();// 得到每个文件
for (File a : file) {
copy(a, out);
}
}
public static void copy(File in, File out) throws IOException {
FileInputStream fis = new FileInputStream(in);
String temp = out.getAbsolutePath() + "\\" + in.getName();
FileOutputStream fos = new FileOutputStream(temp);
byte[] data = new byte[1024 * 1024];
int len = -1;
while ((len = fis.read(data)) != -1) {
data = Arrays.copyOf(data, len);
fos.write(data);
}
fos.close();
fis.close();
fos = null;
fis = null;
}
}
序列化与反序列化
package demo211207;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
序列化
public static void main1(String[] args) throws IOException {
TestModel tm1 = new TestModel();
tm1.setAge(20);
tm1.setName("小猪熊");
FileOutputStream fos = new FileOutputStream("D:\\test\\temp.txt");
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(tm1);
oos.close();
fos.close();
}
反序列化
public static void main(String[] args) throws IOException, ClassNotFoundException {
FileInputStream fps = new FileInputStream("D:\\test\\temp.txt");
ObjectInputStream oos = new ObjectInputStream(fps);
Object obj = oos.readObject();
if(obj instanceof TestModel) {
TestModel tm = (TestModel) obj;
System.out.println(tm.getAge()+","+tm.getName());
}
oos.close();
fps.close();
}
package demo211207;
import java.io.Serializable;
public class TestModel implements Serializable{
/**
* serialVersionUID序列号/序列ID
*/
private static final long serialVersionUID = 94406258500902749L;
private int age;
private String name;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}