Day09 IO流
-
package Io;
import cn.ljy.array.Arrays;
import java.io.FileInputStream;
public class Demo01 {
public static void main(String[] args) throws Exception{
FileInputStream inputStream=new FileInputStream("D:/a.txt");//第一步创建一个文件输入通道,并指定路径
// 第二布读取
// System.out.println("===============================");
// int word=0;//创建一个空间去接读出来的字符
// while( (word =inputStream.read())!=-1){
//
// System.out.println((char) word);
// }
System.out.println("===============================");
// byte[] word1=new byte[6];
// System.out.println(inputStream.read(word1));
// for (byte i: word1) {
// System.out.println((char)i);
// }
int count=0;
byte[] buf=new byte[1000];
while((count=inputStream.read(buf))!=-1){
System.out.println(new String(buf,0,count));
}//第三步关闭通道
inputStream.close();
}
}
-
FileOutputStream
package Io;
import java.io.FileOutputStream;
import java.nio.charset.StandardCharsets;
public class Demo02 {
public static void main(String[] args) throws Exception{
//第一步先创建一个写入对象
FileOutputStream fos=new FileOutputStream("D:/n.txt",true);
//第二步写入数据
fos.write('l');
fos.write(98);;
fos.write(new byte[]{98,99,100});
String a="helle world";
fos.write("helloword".getBytes());
fos.write(a.getBytes());
//第三步关闭
fos.close();
}
}
-
BufferedInputStream
package Io;
import java.io.BufferedInputStream;
import java.io.FileInputStream;
/*
BefferedInputStream的使用
*/
public class Demo04 {
public static void main(String[] args) throws Exception{
//先创建一个FileInputStream
FileInputStream fis=new FileInputStream("d:/a.txt");
//在创建一个BufferedInputStream,要将上面创建的低层放入
BufferedInputStream bis=new BufferedInputStream(fis);
//缓存区中读取
// int date=0;
// while((date=bis.read())!=-1){
// System.out.print((char)date);
// }
//或者也可以自己写一个缓冲区
byte[] buf=new byte[1024];
int date=0;
while((date= bis.read(buf))!=-1){
System.out.print(new String(buf,0,date));
}
//关闭
bis.close();
}
}
-
对象流
序列化ObjectOutputStream
package Io;
import java.io.FileOutputStream;
import java.io.ObjectOutput;
import java.io.ObjectOutputStream;
public class Demo06 {
public static void main(String[] args) throws Exception{
//创建对象流
FileOutputStream fos=new FileOutputStream("D:/Student.txt");
ObjectOutputStream oos=new ObjectOutputStream(fos);
//序列化(写入操作)
Student s1=new Student(12,"ljy");
oos.writeObject(s1);
//关闭流
oos.close();
System.out.println("序列化完毕");
}
}
反序列化ObjectInputStream
package Io;
import java.io.FileInputStream;
import java.io.ObjectInputStream;
public class Demo07 {
public static void main(String[] args) throws Exception {
//创建对象流
FileInputStream fis=new FileInputStream("D:/Student.txt");
ObjectInputStream ois=new ObjectInputStream(fis);
//反序列化(不能在读里面的值只能读一次在读会报异常)
Student s21=(Student)ois.readObject();
//关闭
ois.close();
System.out.println("反序列化完成");
System.out.println(s21.toString());
}
}
-
序列化类必须要实现Serializble接口
-
序列化类中对象属性要求实现Serializble接口
-
序列化版本号ID,保证序列化的类和反序列化的类是同一个类
-
使用transient(瞬间的)修饰属性,这个属性不能序列化
-
静态属性不能序列化
-
序列化多个对象,可以借助集合实现
字符流
FileReader
package Io.File;
import javax.swing.*;
import java.io.FileReader;
public class Demo01 {
public static void main(String[] args) throws Exception {
//创建字符流
FileReader fr=new FileReader("d:/a.txt");
//读取
// int date=0;
// while((date=fr.read())!=-1){
// System.out.println((char) date);
// }
//也可以自己创建一个缓冲区来进行
char[] buf=new char[4];
int count=0;
while((count= fr.read(buf))!=-1){
System.out.println(new String(buf,0,count));
}
fr.close();
}
}
字符流缓存流
BueeredReader(比字节缓存流多个Readline()读取一行这个方法)
BufferedWriter
package Io.File;
import java.io.BufferedWriter;
import java.io.FileWriter;
public class Demo03 {
public static void main(String[] args) throws Exception{
//创建字符缓存流
FileWriter fw=new FileWriter("d:/12345.txt");
BufferedWriter bw=new BufferedWriter(fw);
//写入
for(int i=0;i<5;i++) {
bw.write("hello,wordn你好时间");
bw.newLine();
bw.flush();
}
//关闭
bw.close();
}
}打印流
package Io.File;
import java.io.PrintWriter;
/*
打印流
*/
public class Demo04 {
public static void main(String[] args) throws Exception{
PrintWriter pw=new PrintWriter("D:/amm.txt");
//打印
pw.println("你好");
pw.println("0好");
pw.println("你h");
pw.println("你啊好");
//关闭
pw.close();
System.out.println("打印完毕");
}
}
转换流
package Io.File;
/*
转换流
*/
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class Demo05 {
public static void main(String[] args) throws Exception{
//创建转换流
FileInputStream fis=new FileInputStream("D:/a.txt");
InputStreamReader isr=new InputStreamReader(fis,"utf-8");
//读取
int date=0;
while((date= isr.read())!=-1){
System.out.print((char) date);
}
FileOutputStream fos=new FileOutputStream("D:/fos.txt");
OutputStreamWriter osw=new OutputStreamWriter(fos,"gbk");
for (int i=0;i<5;i++){
osw.write("你好世界");
}
//关闭
osw.close();
isr.close();
}
}创建文件
package cn.ljy.File;
import java.io.File;
import java.io.IOException;
import java.util.Date;
public class Demo01 {
public static void main(String[] args) throws IOException, InterruptedException {
//创建
separator();
}
public static void separator() throws IOException, InterruptedException {
System.out.println("路径分隔符"+ File.pathSeparator);
System.out.println("名称分隔符"+File.separator);
//新建一个文件
File file=new File("D://file.txt");
if(!file.exists()) {
file.createNewFile();
System.out.println("是否存在:" + file.exists());
}
//删除文件
//2.1直接删除
//System.out.println("是否删除了?"+file.delete());
//2.2让jvm区删除,
//file.deleteOnExit();
//Thread.sleep(5000);//删除操作延迟五秒
//3.获取
System.out.println("获取绝对路径"+file.getAbsolutePath());
System.out.println("获取路径"+file.getPath());
System.out.println("获取文件名"+file.getName());
System.out.println("获取父目录"+file.getParent());
System.out.println("获取文件长度"+file.length());
System.out.println("获取创建时间"+new Date(file.lastModified()).toLocaleString());
//判断
System.out.println(file.canRead());//是否可读
System.out.println(file.isFile());//是否事文件
System.out.println(file.isHidden());//是否是隐藏的
}
}文件夹的使用
package cn.ljy.File;
import java.io.File;
import java.io.FileFilter;
import java.util.Date;
public class Demo02 {
public static void main(String[] args) throws InterruptedException {
//文件夹操作
directoryOpe();
}
//创建文件夹方法
public static void directoryOpe() throws InterruptedException {
File dir=new File("d:\\a\\b\\c");
System.out.println(dir.toString());
if(!dir.exists()){
//dir.mkdir();//创建单个文件夹
//dir.mkdirs();//创建多个文件夹
System.out.println("创建结果:"+dir.mkdirs());//要直接将创建代码和打印写在一起不然会导致重复创建
}
//文件夹的删除方法(注意只有文件夹里没有东西的时候才可以删除)
//1.0直接删除dir.delete();
//System.out.println("删除结果:"+dir.delete());//要直接将删除代码和打印写在一起不然会导致重复删除
//2.0通过jvm删除
dir.deleteOnExit();
Thread.sleep(5000);//上一行代码延迟5秒在进行操作
//文件的的查询
System.out.println("获取文件夹的绝对路径:"+dir.getAbsolutePath());
System.out.println("获取文件夹的路径:"+dir.getPath());
System.out.println("获取文件夹的大小:"+dir.length());
System.out.println("获取文件夹的名称:"+dir.getName());
System.out.println("获取文件夹的父目录:"+dir.getParent());
System.out.println("获取文件夹的创建时间:" + new Date(dir.lastModified()).toString());
//文件夹的判断
System.out.println("文件夹是否可读:"+dir.canRead());
System.out.println("文件夹是不是隐藏"+dir.isHidden());
//遍历文件夹
File dir2=new File("D:/图片");
for (String l:dir2.list()){
System.out.println(l);
}
//FileFilter接口的使用
File[] file=dir2.listFiles(new FileFilter() {
@Override
public boolean accept(File pathname) {
if(pathname.getName().endsWith(".jpg"))
return true;
else
return false;
}
});
for (File file2:file){
System.out.println(file2);
}
}
}两个案例
package cn.ljy.File;
import java.io.File;
public class Demo03 {
public static void main(String[] args) {
listt(new File("d:/a"));
dele(new File("d:/a"));
}
public static void listt(File file){
File[] files=file.listFiles();
System.out.println(file.getAbsolutePath());
if(files.length>0&&files!=null){
for (File a:files){
if(a.isDirectory())
listt(a);
else System.out.println(a.getAbsolutePath());
}
}
}
public static void dele(File file){
File[] files=file.listFiles();
if(files.length>0&&files!=null){
for (File f:files){
if(f.isDirectory()){
dele(f);
}else System.out.println(f.delete());
}
}
System.out.println(file.delete());
}
} -
-
浙公网安备 33010602011771号