IO流学习

IO流:存储和读取数据的解决方案

 

 

import java.io.FileOutputStream;
import java.io.IOException;public class Test {public static void main(String[] args) throws IOException {//1.创建对象//写出 输入流 OutputStream//本地文件fileFileOutputStream fos =new FileOutputStream("basic-code\\1.txt");//写出数据fos.write(97);//释放资源fos.close();}
}

 

 

import java.io.FileOutputStream;
import java.io.IOException;public class Test {public static void main(String[] args) throws IOException {FileOutputStream fos = new FileOutputStream("basic-code\\1.txt");//fos.write(97);//fos.write(98);byte[] bytes={97,98,99,100,101};//fos.write(bytes);fos.write(bytes,1,3);fos.close();}
}

 

import java.io.FileOutputStream;
import java.io.IOException;public class Test {public static void main(String[] args) throws IOException {FileOutputStream fos = new FileOutputStream("basic-code\\1.txt");String str ="yjybainchangsigema";byte[] bytes = str.getBytes();// System.out.println(Arrays.toString(bytes));fos.write(bytes);String str2 = "\r\n";byte[] bytes1 = str2.getBytes();fos.write(bytes1);String str3 = "come on";byte[] bytes2 = str3.getBytes();fos.write(bytes2);fos.close();}
}

 

import java.io.FileInputStream;
import java.io.IOException;public class Test {public static void main(String[] args) throws IOException {FileInputStream fio =new FileInputStream("basic-code\\1.txt");int read = fio.read();System.out.println(read);fio.close();}
}

import java.io.FileInputStream;
import java.io.IOException;public class Test {public static void main(String[] args) throws IOException {//字节输入流循环读取FileInputStream fis =new FileInputStream("baisc-code\\1.txt");int b;/** read:表示读取数据,而且是读取一个数据就移动一次指针* 如果没有变量b* 假设文件数据abcde* while((fis.read())!=-1){System.out.println(fis.read);* 相当于a!=-1      输出b*       c!=-1      输出d*       e!=-1      输出-1* 因此第三方变量必须写* */while((b=fis.read())!=-1){System.out.println((char)b);}fis.close();}
}

文件拷贝的基本代码(小文件)

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;public class Test {public static void main(String[] args) throws IOException {//文件拷贝//1.创建对象FileInputStream fis =new FileInputStream("D:\\iii\\movie.mp4");FileOutputStream fos = new FileOutputStream("basic-code\\copy.mp4");//2.拷贝//核心思想:边读边想int b;while((b =fis.read())!=-1){fos.write(b);}//3.释放资源//规则:先开的最后关闭fos.close();fis.close();}
}

 

 

import java.io.FileInputStream;
import java.io.IOException;public class Test {public static void main(String[] args) throws IOException {//1.创建对象FileInputStream fis = new FileInputStream("basic-code\\1.txt");//2.读取数据byte[] bytes = new byte[2];//一次读取多个字节数据 具体多少 跟数组的长度有关//返回值 本子读取到多少个字节数据int len1 = fis.read(bytes);System.out.println(len1);//2String str1 = new String(bytes);System.out.println(str1);int len2 = fis.read(bytes);System.out.println(len2);//2String str2 = new String(bytes);System.out.println(str2);int len3 = fis.read(bytes);System.out.println(len3);//2String str3 = new String(bytes);System.out.println(str3);fis.close();}
}

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;public class Test {public static void main(String[] args) throws IOException {//文件拷贝改写long start = System.currentTimeMillis();FileInputStream fis = new FileInputStream("D:\\aaa");FileOutputStream fos = new FileOutputStream("baisc-code\\a");int len;byte[] bytes =new byte[1025*1024*5];while((len=fis.read())!=-1){fos.write(bytes,0,len);}fos.close();fis.close();long end = System.currentTimeMillis();System.out.println(end-start);}
}

 

 字符集详解(ASCII, GBK)

 

 

 

 

 

 

 

 

import java.io.FileInputStream;
import java.io.IOException;public class Test {public static void main(String[] args) throws IOException {//字节流读取中文会出现乱码FileInputStream fis = new FileInputStream("basic-code\\a");int b;while((b= fis.read())!=-1){System.out.println((char)b);}fis.close();}
}

数据流一个个拷贝 肯定就会出现乱码

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;public class Test {public static void main(String[] args) throws IOException {//1.创建对象FileInputStream fis = new FileInputStream("basic-code\\a.txt");FileOutputStream fos =new FileOutputStream("basic-code\\1.txt");//2.拷贝int b;while((b=fis.read())!=-1){fos.write(b);}//3.释放资源fos.close();fis.close();}
}

记事本!数据不会丢失目的地和数据源保持一致

 

 

import java.io.IOException;
import java.util.Arrays;public class Test {public static void main(String[] args) throws IOException {//1.编码String str ="ai你哟";byte[] bytes1 = str.getBytes();System.out.println(Arrays.toString(bytes1));//???byte[] bytes2 = str.getBytes("GBK");System.out.println(Arrays.toString(bytes2));//???//2.解码String str2 = new String(bytes1);System.out.println(str2);String str3 = new String(bytes1,"GBK");System.out.println(str3);}
}

 

 

 

 

import java.io.FileReader;
import java.io.IOException;public class Test {public static void main(String[] args) throws IOException {//1.创建对象并关联本地文件FileReader fr = new FileReader("basic-code\\1.txt");//2.读取数据 read()//字符流的底层也是字节流,默认也是一个字节一个字节的读取的.//如果遇到中文就会一次读取多个 GBK依次读两个字节,UTF-8一次读三个字节//在读取之后 方法的底层还会进行解码并转成十进制//最终把这个十进制作为返回值//这个十进制的数据也表示在字符集上的数字// 英文:文件里面二进制数据 0110 0001//read方法进行获取a,解码并转成十进制97//中文:文件里面的二进制数据 11100110  10110001  10001001//read方法进行读取,解码并转成十进制27721//我想看到中文汉字 就是把这些十进制数据 进行强转int ch;while((ch=fr.read())!=-1){System.out.print((char)ch);}//释放资源fr.close();}
}
import java.io.FileReader;
import java.io.IOException;public class Test {public static void main(String[] args) throws IOException {//1.创建对象FileReader fr =new FileReader("basic-code\\1.txt");//2.读取数据char[] chars =new char[2];int len;//fr.read();//读取数据,解码,强转三步合并了,把强转之后的字符放到数组当中//空参的read()+强制类型转换while((len = fr.read(chars))!=-1){//把数组中的数据变成字符串再进行打印System.out.println(new String(chars,0,len));}//3.释放资源fr.close();}
}
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;public class Test {public static void main(String[] args) throws IOException {//字节输出流:FileOutputStream fos = new FileOutputStream("basic-code\\1.txt");fos.write(97);//字节流 每次只能操作一个字节 255fos.close();//字符输出流:FileWriter fw =new FileWriter("basic-code\\a.txt");fw.write(7777);//根据字符集的编码方式进行编码 把编码之后的数据写到文件中去fw.close();FileWriter fw1= new FileWriter("basic-code\\1.txt",true);//续写开关//fw1.write("你好");char[] chars ={'a','b','c','我'};fw.write(chars);fw1.close();}
}

 

 

 

 

 

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;public class Test {public static void main(String[] args) throws IOException {//拷贝文件夹 考虑子文件//1.创建对象表示数据源File src =new File("D:\\aaa\\src");//2.创建对象表示目的地File dest = new File("D:\\aaa\\dest");//调用方法开始拷贝copydir(src,dest);}/** 作用:拷贝文件夹* 参数一:数据源* 参数二:目的地** */private static void copydir(File src, File dest) throws IOException {dest.mkdirs();递归//进入数据源File[] files = src.listFiles();//遍历数组for (File file : files) {if(file.isFile()){//判断文件 拷贝 FileInputStream fis =new FileInputStream(file);FileOutputStream fos =new FileOutputStream(new File(dest,file.getName()));byte[] bytes = new byte[1024];int len;while((len=fis.read(bytes))!=-1){fos.write(bytes,0,len);}fos.close();fis.close();}else{//判断文件夹 递归copydir(file,new File(dest,file.getName()));}}}
}

        //文件加密//原始文件FileInputStream fis =new FileInputStream("C:\\girl.jpg");//加密处理FileOutputStream fos =new FileOutputStream("C:\\ency.jpg");//加密处理int b;while((b=fis.read())!=-1){fos.write(b ^2);//随便异或一个数字}fos.close();fis.close();//这个程序操作完成后就可以将源文件删除了 这样别人也不知道是什么东西等到你想看了//你再进行解密
      //前置知识/**  ^:异或* 两边相同:false* 两边不同:true*  0:false*  1:true** 100:110100* 10:1010**      1100100*     ^0001010* ________________*      1101110    --->110*   ^  0001010* ________________*      1100100    --->100* System.out.println(100^10);//110* System.out.println(100^10^10);//100** *///文件加密//原始文件FileInputStream fis =new FileInputStream("C:\\ency.jpg");//加密处理FileOutputStream fos =new FileOutputStream("C:\\redu.jpg");//加密处理int b;while((b=fis.read())!=-1){fos.write(b ^2);//随便异或一个数字}fos.close();fis.close();//这个程序操作完成后就可以将源文件删除了 这样别人也不知道是什么东西等到你想看了//你再进行解密

import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;public class Test {public static void main(String[] args) throws IOException {//修改文件中的数据//1.读取数据FileReader fr =new FileReader("basic-code\\a.txt");StringBuilder sb =new StringBuilder();int ch;while((ch = fr.read())!=-1){sb.append((char)ch);}fr.close();System.out.println(sb);//2.排序String str =sb.toString();String[] arrstr =str.split("-");ArrayList<Integer>list = new ArrayList<>();for (String s : arrstr) {int i = Integer.parseInt(s);list.add(i);}//System.out.println(list);Collections.sort(list);//3.写出FileWriter fw =new FileWriter("basic-code\\a.txt");for (int i = 0; i < list.size(); i++) {if(i==list.size()-1){fw.write(list.get(i)+"");//如果直接写数字 文件会变成ASCII码}else{fw.write(list.get(i)+"-");}}fw.close();}
}

import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Arrays;
//细节:文件中的数据不要换行  如果加了换行会有\r\n 读取也会读到
//bom头---占三个字节   编码改为ANSI
public class Test {public static void main(String[] args) throws IOException {//修改文件中的数据//1.读取数据FileReader fr =new FileReader("basic-code\\a.txt");StringBuilder sb =new StringBuilder();int ch;while((ch = fr.read())!=-1){sb.append((char)ch);}fr.close();System.out.println(sb);//2.排序Integer[] arr = Arrays.stream(sb.toString().split("-")).map(Integer::parseInt).sorted().toArray(Integer[]::new);//System.out.println(arr);//3.写出FileWriter fw = new FileWriter("C:\\yjy");String s = Arrays.toString(arr).replace(", ","-");String result = s.substring(1,s.length()-1);//System.out.println(result);fw.write(result);fw.close();}
}

 

 

public class Test {public static void main(String[] args) throws IOException {//1.创建缓冲流的对象BufferedInputStream bis = new BufferedInputStream(new FileInputStream("basic-code\\a.txt"));BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("basic-code\\1.txt"));//2.循环读取int b;while ((b = bis.read()) != -1) {bos.write(b);}//3.释放资源bos.close();bis.close();}
}
public class Test {public static void main(String[] args) throws IOException {//一次读写一个字节数组BufferedInputStream bis = new BufferedInputStream(new FileInputStream("basic-code\\a.txt"));BufferedOutputStream bos =new BufferedOutputStream(new FileOutputStream("basic-code\\b.txt"));byte[] bytes =new byte[1024];int len;while((len=bis.read(bytes))!=-1){bos.write(bytes,0,len);}bos.close();bis.close();}
}

 

 

 

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;public class Test {public static void main(String[] args) throws IOException {//两个缓冲区之间这不也是一个字节一个字节的进行倒手的吗?? 速度为什么快了?//因为这一段是在内存中运行的速度非常的快/*字符缓冲输入流:* 构造方法:public BufferedReader(Reader r)* 特有方法:public String readLine() 读一整行*///readLine 方法在读取的时候 一次读一整行 遇到空格换行结束//但是他不会把回车读到内存当中 //1.创建字符缓冲输入流的对象BufferedReader br =new BufferedReader(new FileReader("basic-code\\1.txt"));//2.读取数据
//        String line = br.readLine();
//        System.out.println(line);String line;while((line=br.readLine())!=null){System.out.println(line);}//释放资源br.close();}
}
public class Test {public static void main(String[] args) throws IOException {/*字符缓冲输出流* 构造方法:public BufferedWriter(writer r)* 特有方法:public void newLine() 跨平台换行*///1.创建字符缓冲输出流的对象BufferedWriter bw =new BufferedWriter(new FileWriter("b.txt"));//2.写出数据bw.write("你嘴角上扬的样子,百度搜索不到");bw.newLine();bw.write("以后我结婚你一定要来 ,没有新娘我会很尴尬");//3.释放资源bw.close();}
}

import java.io.*;public class Test {public static void main(String[] args) throws IOException {//拷贝文件 //四种方法拷贝文件,并统计各自用时//字节流的基本流:依次读写一个字节//字节流的基本流:一次读写一个字节数组//字节缓冲流:一次读写一个字节//字节缓冲流:一次读写一个字节数组long start = System.currentTimeMillis();method1();method2();//16method3();//95method4();//17long end=System.currentTimeMillis();System.out.println((end-start)/1000.0+"秒");}private static void method3() throws IOException {//字节缓冲流BufferedInputStream bis =new BufferedInputStream(new FileInputStream("1.txt"));BufferedOutputStream bos =new BufferedOutputStream(new FileOutputStream("2.txt"));int b;while((b=bis.read())!=-1){bos.write(b);}bos.close();bis.close();}private static void method4() throws IOException {BufferedInputStream bis = new BufferedInputStream(new FileInputStream("1.txt"));BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("2.txt"));byte[] bytes = new byte[8192];int len;while ((len = bis.read(bytes)) != -1) {bos.write(bytes,0,len);}bos.close();bis.close();}private static void method2() throws IOException {FileInputStream fis = new FileInputStream("C:\\1.txt");FileOutputStream fos=new FileOutputStream("1.txt");byte[] bytes= new byte[1024];int len;while((len=fis.read(bytes))!=-1){fos.write(bytes,0,len);}fos.close();fis.close();}private static void method1() throws IOException {FileInputStream fis = new FileInputStream("C:\\1.txt");FileOutputStream fos = new FileOutputStream("1.txt");int b;while ((b = fis.read()) != -1) {fos.write(b);}fos.close();fis.close();}}

import java.io.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;public class Test {public static void main(String[] args) throws IOException {//需求:把<出师表>的文章顺序进行恢复到一个新文件中//1.读取数据BufferedReader br =new BufferedReader(new FileReader("basic-code"));String line;ArrayList<String>list=new ArrayList<>();while((line=br.readLine())!=null){//  System.out.println(line);list.add(line);}br.close();//2.排序//排序规则:按照每一行前面的序号进行排序Collections.sort(list, new Comparator<String>() {@Overridepublic int compare(String o1, String o2) {//获取o1,o2的序号int i = Integer.parseInt(o1.split("\\.")[0]);int i1 = Integer.parseInt(o2.split("\\.")[0]);return i-i1;}});//写出BufferedWriter bw =new BufferedWriter(new FileWriter("1.txt"));for (String s : list) {bw.write(s);bw.newLine();}bw.close();}
}
import java.io.*;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;public class Test {public static void main(String[] args) throws IOException {//需求:把<出师表>的文章顺序进行恢复到一个新文件中BufferedReader br =new BufferedReader(new FileReader("1.txt"));String line;TreeMap<Integer,String> tm = new TreeMap<>();while((line=br.readLine())!=null){String[] arr =line.split("\\.");//0:序号  1:内容tm.put(Integer.parseInt(arr[0]),line);}br.close();//System.out.println(tm);//2.写出数据BufferedWriter bw =new BufferedWriter(new FileWriter("basic-code"));Set<Map.Entry<Integer,String>>entries = tm.entrySet();for(Map.Entry<Integer,String>entry:entries){String value = entry.getValue();bw.write(value);bw.newLine();}bw.close();}
}

 

import java.io.*;public class Test {public static void main(String[] args) throws IOException {//能用计数器的知识来做吗?不能 因为变量创建在内存中 程序重启 又能够再来三次//为了永久化存储所以要保存在文件当中//1.把文件中的数字读取到内存中//一次读一行 而不是读一个BufferedReader br =new BufferedReader(new FileReader("basic-code"));String line =br.readLine();int count = Integer.parseInt(line);//表示当前软件又运行了一次count++;//2.判断if(count<=3){System.out.println("欢迎使用本软件,第"+count+"次免费使用");}else{System.out.println("本软件只能使用三次,请注册会员继续使用");}//<=3:正常运行//>3:不能运行//3.把自增之后的count写出到文件当中BufferedWriter bw = new BufferedWriter(new FileWriter("basic-code"));//缓冲区输出流在关联文件的时候,文件存在就会清空//原则:IO:随用随创建//什么时候不用就关掉bw.write(count+"");//97 abw.close();}
}

 

import java.io.*;
import java.nio.charset.Charset;public class Test {public static void main(String[] args) throws IOException {//利用转换流按照指定字符编码读取(了解)/** 因为JDK11:这种方法被淘汰了  --->替代方案(掌握)*///        //1.创建对象并指定字符编码(了解即可)
//        InputStreamReader isr =new InputStreamReader(new FileInputStream("basic-code"),"GBK");
//        //2.读取数据
//        int ch;
//        while((ch=isr.read())!=-1){
//            System.out.println((char)ch);
//        }
//        //3.释放资源
//        isr.close();//掌握FileReader fr = new FileReader("basic-code", Charset.forName("GBK"));// 2.读取数据int ch;while((ch=fr.read())!=-1){System.out.println((char)ch);}//3.释放资源fr.close();}
}

import java.io.FileWriter;
import java.io.IOException;
import java.nio.charset.Charset;public class Test {public static void main(String[] args) throws IOException {//利用转换流按照指定字符编码写出(了解)//        //1.创建转换流对象
//        OutputStreamWriter osw =new OutputStreamWriter(new FileOutputStream("basic-code"),"GBK");
//        //2.写出数据
//        osw.write("你好你好");
//        //3.释放资源
//        osw.close();//替代方案FileWriter fw = new FileWriter("basic-code", Charset.forName("GBK"));fw.write("你好你好");fw.close();}
}

 

import java.io.*;
import java.nio.charset.Charset;public class Test {public static void main(String[] args) throws IOException {//将本地文件中GBK文件 转成UTF-8//1.JDK以前的方案InputStreamReader isr = new InputStreamReader(new FileInputStream("basic-code"),"GBK");OutputStreamWriter osw =new OutputStreamWriter(new FileOutputStream("basic-code1"),"UTF-8");int b;while ((b= isr.read())!=-1){osw.write(b);}osw.close();isr.close();//替代方案FileReader fr =new FileReader("basic-code", Charset.forName("GBK"));FileWriter fw =new FileWriter("basic-code1",Charset.forName("UTF-8"));int b;while((b=fr.read())!=-1){fw.write(b);}fw.close();fr.close();}
}

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;public class Test {public static void main(String[] args) throws IOException {//利用字节流读取文件中的数据 每次读一整行,而且不能出现乱码//1.字节流在读取中文的时候,是会出现乱码的,但是字符流可以搞定//2.字节流里面没有读一整行的方法的 只有字符缓冲流可以搞定//        FileInputStream fis= new FileInputStream("basic-code");
//        InputStreamReader isr =new InputStreamReader(fis);
//
//        BufferedReader br =new BufferedReader(isr);
//        String s = br.readLine();
//        br.close();BufferedReader br =new BufferedReader(new InputStreamReader(new FileInputStream("yjy.txt")));String line;while((line=br.readLine())!=null){System.out.println(line);}br.close();}
}

 

 

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;public class Test {public static void main(String[] args) throws IOException {/** serializable接口里面没有抽象方法,标记型接口* 一旦实现了这个接口 那么就表示当前的student类可以被序列化* 理解:* 一个物品的合格证* *///序列化流Student stu =new Student("zhangsan",23);ObjectOutputStream oos =new ObjectOutputStream(new FileOutputStream("basic-code\\a.txt"));oos.writeObject(stu);oos.close();}
}
import java.io.Serializable;public class Student implements Serializable {private String name;private int age;public Student() {}public Student(String name, int age) {this.name = name;this.age = age;}/*** 获取* @return name*/public String getName() {return name;}/*** 设置* @param name*/public void setName(String name) {this.name = name;}/*** 获取* @return age*/public int getAge() {return age;}/*** 设置* @param age*/public void setAge(int age) {this.age = age;}public String toString() {return "Student{name = " + name + ", age = " + age + "}";}
}

 

 

自己设置一个提示-版本号

在搜索框搜索Serializable

public class Student implements Serializable {@Serialprivate static final long serialVersionUID = 5498121245996411513L;// private static final long serialVersionUID = 1L;private String name;private int age;private String address;public Student() {}public Student(String name, int age) {this.name = name;this.age = age;}/*** 获取* @return name*/public String getName() {return name;}/*** 设置* @param name*/public void setName(String name) {this.name = name;}/*** 获取* @return age*/public int getAge() {return age;}/*** 设置* @param age*/public void setAge(int age) {this.age = age;}public String toString() {return "Student{name = " + name + ", age = " + age + "}";}
}
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.util.ArrayList;public class Test {public static void main(String[] args) throws IOException, ClassNotFoundException {///用对象流读写多个对象//需求://将多个自定义对象序列化到文件中,但是由于对象的个数不确定,反序列化流该如何读取呢?Student s1 =new Student("zhangsan",23,"南京");Student s2 =new Student("lisi",24,"重庆");Student s3 =new Student("wangwu",25,"北京");//序列化多个对象ArrayList<Student>list =new ArrayList<>();list.add(s1);list.add(s2);list.add(s3);ObjectOutputStream oos =new ObjectOutputStream(new FileOutputStream("basic-code"));oos.writeObject(list);oos.close();}
}
import java.io.FileInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.util.ArrayList;public class Demo {public static void main(String[] args) throws IOException, ClassNotFoundException {//反序列化流的对象ObjectInputStream ois = new ObjectInputStream(new FileInputStream("basic-code"));
//
//        Student s1 = (Student) ois.readObject();
//        Student s2 = (Student) ois.readObject();
//        Student s3 = (Student) ois.readObject();ArrayList<Student>list = (ArrayList<Student>) ois.readObject();for (Student student : list) {System.out.println(student);}ois.close();}
}

 

 

 

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintStream;
import java.nio.charset.Charset;public class Test {public static void main(String[] args) throws IOException, ClassNotFoundException {//打印流//1.创建字节打印流的对象PrintStream ps =new PrintStream(new FileOutputStream("myio\\1.txt"),true, Charset.forName("UTF-8"));//2.写出数据ps.println(97);//写出+自动刷新+自动换行ps.print(true);ps.println();ps.printf("%s 爱上了 %s","阿珍","阿强");//3.释放资源ps.close();}
}
public class Test {public static void main(String[] args) throws IOException, ClassNotFoundException {//打印流//1.创建字符打印流PrintWriter pw =new PrintWriter(new FileWriter("basic-code"),true);pw.println("dhuaidhwahdo");pw.print("你好你好");pw.close();}
}

解压缩流/压缩流

 

 

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;public class Test {public static void main(String[] args) throws IOException, ClassNotFoundException {//1.创建一个File表示要解压的压缩包File src =new File("D:\\aaa.zip");//2.创建File对象表示解压的目的地File dest = new File("D:\\");//调用方法unzip(src,dest);}//定义一个方法用来解压public static void unzip(File src,File dest) throws IOException {//解压的本质:把压缩包里面的每一个文件或者文件夹读取出来 按照层级拷贝到目的地当中//创建一个解压缩流用来读取压缩包中的数据ZipInputStream zip =new ZipInputStream(new FileInputStream(src));//先获取到压缩包里面的每一个zipentry对象//        for (int i = 0; i < 100; i++) {
//            ZipEntry entry = zip.getNextEntry();
//            System.out.println(entry);//找不到就是返回null
//        }//表示当前在压缩包中获取到的文件或者文件夹ZipEntry entry;while ((entry = zip.getNextEntry())!=null){System.out.println(entry);//文件夹:需要在目的地dest处创建一个同样的文件夹//文件:需要读取到压缩包中的文件,并把他存放到目的地dest文件夹中(按照层级目录进行存放)if(entry.isDirectory()){//文件夹:需要在目的地dest处创建一个同样的文件夹File file =new File(dest,entry.toString());file.mkdirs();}else{//文件:需要读取到压缩包的文件,并把他存放到目的地dest文件夹中(按照层级目录进行存放)FileOutputStream fos = new FileOutputStream(new File(dest,entry.toString()));int b;while((b =zip.read())!=-1){//写到目的地fos.write(b);}fos.close();//表示在压缩包中的一个文件处理完毕了zip.closeEntry();}}zip.close();}
}

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;public class Test {public static void main(String[] args) throws IOException, ClassNotFoundException {//压缩单个文件 ->压缩包//1.创建File对象表示要压缩的文件File src = new File("D:\\yjy.txt");//2.创建File对象表示压缩包的位置File dest = new File("D:\\");//3.调用方法来压缩toZip(src,dest);}/** 作用:压缩* 参数一:表示要压缩的文件** 参数二:表示压缩包的位置** */public static void toZip(File src,File dest) throws IOException {//1.创建压缩流关联压缩包ZipOutputStream zos =new ZipOutputStream(new FileOutputStream(new File(dest,"yjy.zip")));//2.创建ZipEntry对象,表示压缩包里面的每一个文件和文件夹ZipEntry entry = new ZipEntry("yjy.txt");//3.把ZipEntry对象放到压缩包当中zos.putNextEntry(entry);//4.把src里面的数据写到压缩包中FileInputStream fis = new FileInputStream(src);int b;while((b=fis.read())!=-1){zos.write(b);}zos.closeEntry();zos.close();}
}

 

import java.io.File;
import java.io.IOException;public class DEMO {public static void main(String[] args) throws IOException {
//        File src =new File("basic-code\\1.txt");
//        File dest =new File("basic-code\\copy.txt");
//
//        FileUtils.copyFile(src,dest);//用这个包直接拷贝了//        File src =new File("D:\\aaa");
//        File dest =new File("D:\\bbb");
//        FileUtils.copyDirectory(src,dest);//        File src =new File("D:\\aaa");
//        File dest =new File("D:\\bbb");
//        FileUtils.copyDirectoryToDirectory(src,dest);//作用:bbb:里面有aaa然后有aaa里面的东西File src =new File("D:\\aaa");FileUtils.deleteDirectory(src);File dest =new File("D:\\bbb");FileUtils.cleanDirectory(dest);}
}

 

 

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;public class DEMO {public static void main(String[] args) throws IOException {//Hutool//因为里面的方法都是静态的所以直接用类名就可以调用了File file = FileUtil.file("D:\\aaa", "bbb", "a.txt");System.out.println(file);//D:\aaa\bbb\a.txtFile f =new File("a.txt");f.createNewFile();//如果父级路径不存在那么会报错//Hutool 里面的touch方法如果找不到这个父级路径会帮我们创建File touch = FileUtil.touch(file);System.out.println(touch);ArrayList<String>list =new ArrayList<>();list.add("aaa");list.add("aaa");list.add("aaa");File file1 = FileUtil.writeLines(list, "D:\\a.txt", "UTF-8", false);System.out.println(file1);File file2 = FileUtil.appendLines(list, "D:\\a.txt", "UTF-8");System.out.println(file2);List<String> strings = FileUtil.readLines("D:\\a.txt", "UTF-8");System.out.println(list);}
}

官网:
    https://hutool.cn/
API文档:
    https://apidoc.gitee.com/dromara/hutool/

中文使用文档:
    https://hutool.cn/docs/#/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/225620.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RNN和LSTM学习笔记-初学者

提示&#xff1a; 目录 前言一、RNN介绍二、LSTM介绍总结 前言 提示&#xff1a; 提示&#xff1a; 一、RNN介绍 RNN是一种短时记忆&#xff0c;而LSTM是长短时记忆网络 二、LSTM介绍 总结

【专题】最小生成树(prim算法、kruscal算法)

目录 一、最小生成树二、Prim算法1. 算法思想2. 例题3. 性能分析 三、Kruscal算法1. 算法思想2. 例题3. 性能分析 一、最小生成树 生成树中边的权值&#xff08;代价&#xff09;之和最小的树。 二、Prim算法 1. 算法思想 设N(V,{E})是连通网&#xff0c;TE是N上最小生成树…

数据库02-04 中级SQL

01.on关键字&#xff1a; 主要用join…on来用多关系查询&#xff0c;和where关键字的相同 student关系&#xff1a; takes关系&#xff1a; 02.一般外连接 自然连接&#xff1a; 这个外连接&#xff08;自然连接&#xff09;会缺少空值的元祖&#xff08;本例子中的stude…

算法--数据结构基础

文章目录 数据结构单链表栈表达式求值前缀表达式中缀表达式后缀表达式 队列单调栈单调队列KMPTrie并查集堆哈希表字符串哈希 数据结构 单链表 用数组模拟&#xff08;静态链表&#xff09;效率比定义Node类&#xff08;动态链表&#xff09;效率高些 使用数组模拟单链表&am…

Java 使用mybatis的BaseTypeHandler实现数据自动AES加密解密,通过Hutool工具类自定义注解实现数据脱【附有完整步骤和代码】

一、AES加密 1 加密工具类 使用KeyGenerator生成AES算法生成器 public class AESUtil {/*** 密钥长度: 128, 192 or 256*/private static final int KEY_SIZE 256;/*** 加密/解密算法名称*/private static final String ALGORITHM "AES";/*** 随机数生成器&#…

【CDP】CDP 集群通过Knox 访问Yarn Web UI,无法跳转到Flink Web UI 问题解决

一、前言 记录下在CDP 环境中&#xff0c;通过Knox 访问Yarn Web UI&#xff0c;无法跳转到Flink Web UI 的BUG 解决方法。 二、问题复现 登录 Knox Web UI 找到任一 Flink 任务 点击 ApplicationMaster 跳转 Flink WEB UI 出问题 内容空白&#xff0c;无法正常跳转到…

JS基本语法

JS基本语法 变量数据类型原始数据类型 函数定义第一种方式第二种方式 JS 对象ArrayStringJavaScript 自定义对象JSONDOMBOM JS 事件事件监听事件绑定常见事件 变量 数据类型 原始数据类型 函数定义 第一种方式 第二种方式 JS 对象 Array String JavaScript 自定义对象 JSON …

向华为学习:基于BLM模型的战略规划研讨会实操的详细说明,含研讨表单(一)

前面&#xff0c;华研荟用了三篇文章介绍华为战略规划的时候使用的其中一个工具&#xff1a;五看三定。一句话来说&#xff0c;五看三定是通过“五看”来知己知彼&#xff0c;然后设计业务&#xff0c;在选定的业务领域&#xff08;方向&#xff09;确定战略控制点&#xff0c;…

STM32_HAL库—IWDG看门狗

一、CubeMX设置 1、晶振配置&#xff08;72M&#xff09; 2、数据配置 超时时间 Tout prv / LSI * rlv (s) 其中prv是预分频器寄存器的值&#xff0c;rlv是重装载寄存器的值&#xff0c;而LSI值默认是40kHz&#xff0c;如下所示。 3、代码实现 int main(){while(1){HAL_IW…

【c++】stl_priority_queue优先级队列

目录 一、priority_queue的介绍 二、 priority_queue的本质 三、priority_queue的使用 四、priority_queue的模拟实现 总结 一、priority_queue的介绍 首先让我们通过阅读优先级队列的官方文档 简单翻译一下 1. 优先队列是一种容器适配器&#xff0c;根据严格的弱排序标准…

MySQL数据库遇到不规范建表问题解决方案

简介&#xff1a; 需要建立的关联表如上图所示。 问题发现&#xff1a; 好&#xff0c;问题来了&#xff0c;大伙儿请看&#xff1a;我们的organizations表中的Industry字段居然存储了两个IndustryName&#xff0c;这就很恶心了&#xff0c;就需要我们进行拆分和去重后放到In…

【vtkWidgetRepresentation】第十二期 vtkBalloonRepresentation

很高兴在雪易的CSDN遇见你 VTK技术爱好者 QQ:870202403 前言 本文分享vtkBalloonRepresentation,用于标注文字或图片,希望对各位小伙伴有所帮助! 感谢各位小伙伴的点赞+关注,小易会继续努力分享,一起进步! 你的点赞就是我的动力(^U^)ノ~YO 1. vtkBalloonRepre…

竞赛保研 opencv 图像识别 指纹识别 - python

0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 基于机器视觉的指纹识别系统 &#x1f947;学长这里给一个题目综合评分(每项满分5分) 难度系数&#xff1a;3分工作量&#xff1a;3分创新点&#xff1a;4分 该项目较为新颖&#xff0c;适…

标书设计:目录的必要性与优化建议

标书&#xff0c;作为商务文件的一种&#xff0c;旨在展示公司实力、产品优势和服务水平&#xff0c;是企业开展商业活动的一项重要工具。在进行标书制作时&#xff0c;有人认为是否需要目录&#xff0c;成为了一个值得讨论的问题。 目录作为标书的导航&#xff0c;是否必要呢&…

Excel实现字母+数字拖拉自动递增,步长可更改

目录 1、带有字母的数字序列自增加&#xff08;步长可变&#xff09; 2、仅字母自增加 3、字母数字同时自增 1、带有字母的数字序列自增加&#xff08;步长可变&#xff09; 使用Excel通常可以直接通过拖拉的方式&#xff0c;实现自增数字&#xf…

Java报错-Non-terminating decimal expansion; no exact representable decimal result

1. 背景 在使用 BigDecimal 的 divide() 对两个数相除时&#xff0c;报了如题的错误。 public class Test {public static void main(String[] args) {BigDecimal b1 new BigDecimal(1);BigDecimal b2 new BigDecimal(3);System.out.println(b1.divide(b2)); // Sys…

单口千兆以太网物理层芯片

一、基本介绍 YT8521S是一款单口千兆以太网物理层芯片&#xff0c;YT8521S是一款高度集成的以太网收发器&#xff0c;符合10BASE-Te、100BASE-TX和1000BASE-T IEEE 802.3标准。它提供了传输和接收所需的所有物理层功能通过CAT.5E UTP电缆的以太网数据包。 YT8521S采用最先进的…

【Unity动画】综合案例完结-控制角色动作播放+声音配套

这个案例实现的动作并不复杂&#xff0c;主要包含一个 跳跃动作、攻击动作、还有一个包含三个动画状态的动画混合树。然后设置三个参数来控制切换。 状态机结构如下&#xff1a; 完整代码 using System.Collections; using System.Collections.Generic; using UnityEngine;pu…

字符设备驱动模块的编译

一. 简介 本文继上一篇文章的学习&#xff0c;上一篇文章学习了字符设备驱动框架的初步编写。文章地址如下&#xff1a; 字符设备驱动框架的编写-CSDN博客 本文对上一篇编写的驱动模块初步框架进行编译。 二. 字符设备驱动模块的编译 上一篇文章&#xff0c;编写了字符设备…