目录
I-O流
.close方法
常用方法
字符流的写和读
写
读
字节流的写和读
写
读?
图片复制例题
序列化与反序列化
序列化
?? 反序列化??
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;
?? ?}
}
|