企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
### File类 ~~~ public class FileDemo1 { public static void main(String[] args) throws IOException { // File类--不能访问文件 File file = new File("E:/abc.doc"); // 创建文件夹mkdirs() // if(!file.exists()) { // file.mkdirs(); // } // 创建文件createNewFile() // if(!file.exists()) { // file.createNewFile(); // } // 判断是文件还是文件夹的方法 // if(file.isFile()) { // System.out.println("是文件"); // } // // if(file.isDirectory()) { // System.out.println("是文件夹"); // } // 文件路径 // System.out.println(file.getPath()); // 文件名称 // System.out.println(file.getName()); // 删除文件 // if(file.exists()) { // file.delete(); // } // System.out.println(file.getAbsolutePath()); } } ~~~ *** ### 流(Stream) 文件传输(读取和书写) **按照流向分类**:输入输出的**参照物是Java程序** ①输入流:读文件 ②输出流:写文件 **按照传输单位分类**: ①字节流:以字节为单位传输数据,一般用于二进制文件的传输 ②字符流:以字符为单位传输数据,一般用于纯文本文件的传输 **按照功能分类**: ①节点流 ②处理流 *** ![](https://box.kancloud.cn/d47b152d8787f11cc65155ba78990b9c_780x622.png) ![](https://box.kancloud.cn/d48bd40dcf1e92f6052f78d0c8b17b27_717x366.png) ![](https://box.kancloud.cn/b2cb9e8931a2179bad3ef1121e5830b2_688x551.png) *** ~~~ import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.PrintWriter; /** * 纯文本的拷贝 * @author Administrator * */ public class Practice1 { public static void main(String[] args) { // 将D:/text1.txt拷贝到E:test2.txt FileReader fr = null; BufferedReader in = null; FileWriter fw = null; PrintWriter out = null; try { fr = new FileReader("D:/test1.docx"); in = new BufferedReader(fr); fw = new FileWriter("E:/test2.docx"); out = new PrintWriter(fw,true); String msg = in.readLine(); while(msg != null) { out.println(msg); msg = in.readLine(); } System.out.println("文件copy成功"); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { try { fr.close(); } catch (IOException e) { e.printStackTrace(); } try { in.close(); } catch (IOException e) { e.printStackTrace(); } try { fw.close(); } catch (IOException e) { e.printStackTrace(); } out.close(); } } } ~~~ ~~~ import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; /** * 二进制文件的拷贝 * @author Administrator * */ public class BinaryFileCopyDemo1 { public static void main(String[] args) { // 搭建管道 FileInputStream fis = null; BufferedInputStream in = null; FileOutputStream fos = null; BufferedOutputStream out = null; try { fis = new FileInputStream("C:\\Users\\Administrator\\Desktop\\2345截图20180511165805.png"); in = new BufferedInputStream(fis); File file = new File("E:/xyz"); if(!file.exists()) { file.mkdir(); } fos = new FileOutputStream("E:/test.png"); out = new BufferedOutputStream(fos); byte buffer[] = new byte[1024]; // len是真正读取到的字节数,没有返回-1 int len = in.read(buffer); while(len != -1) { // buffer缓冲区 // off 偏移量--0 // len 长度 out.write(buffer, 0, len); len = in.read(buffer); } System.out.println("finish"); } catch (Exception e) { e.printStackTrace(); } finally { try { out.close(); } catch (IOException e1) { e1.printStackTrace(); } try { if(fis != null) { fis.close(); } } catch (IOException e) { e.printStackTrace(); } try { in.close(); } catch (IOException e) { e.printStackTrace(); } try { fos.close(); } catch (IOException e) { e.printStackTrace(); } } } } ~~~ *** ### 对象序列化 对象(Object)序列化是指将对象转换为字节序列的过程 反序列化则是根据字节序列恢复对象的过程 通过使用ObjectInputStream和ObjectOutputStream类保存和读取对 象的机制叫做序列化机制 序列化对象前提: 这个类必须实现一个接口**Serializable**(或者**Externalizable**) ~~~ public interface Serializable { } ~~~ 接口Serializable是一个空的接口,Java中存在很多向这样没有方法,只有定义的接口:标识接口,标识一个类是否具有某种能力 实现Serializable的类对象就能实现序列化 ~~~ import java.io.Serializable; public class Person implements Serializable{ // serialVersionUID确保唯一 private static final long serialVersionUID = 8373631186930852694L; // transient能够修饰属性--不能被序列化(反序列化只能得到默认值) transient int age; String name; public Person() { } public Person(int age, String name) { super(); this.age = age; this.name = name; } } ~~~ ~~~ import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; public class SerializationDemo { public static void main(String[] args) { // 对象序列化 // Person p = new Person(13, "李四"); // FileOutputStream fos = null; // ObjectOutputStream out = null; // try { // fos = new FileOutputStream("E:/person.bin"); // out = new ObjectOutputStream(fos); // out.writeObject(p); // } catch (Exception e) { // e.printStackTrace(); // } finally { // try { // fos.close(); // } catch (IOException e) { // e.printStackTrace(); // } // try { // out.close(); // } catch (IOException e) { // e.printStackTrace(); // } // } // 反序列化 FileInputStream fis = null; ObjectInputStream in = null; try { fis = new FileInputStream("E:/person.bin"); in = new ObjectInputStream(fis); Person p1 = (Person) in.readObject(); System.out.println(p1.age + " " + p1.name); } catch (Exception e) { e.printStackTrace(); } finally { try { fis.close(); } catch (IOException e) { e.printStackTrace(); } try { in.close(); } catch (IOException e) { e.printStackTrace(); } } } } ~~~