文件基础操作
File f = new File("F:/2021/img/cat.jpg"); // 列出所有的盘符c: d: e: 等等 File[] rootsFile = File.listRoots(); System.out.println(Arrays.toString(rootsFile)); // 以字符串数组的形式,返回当前文件夹下的所有文件(不包含子文件及子文件夹) String[] list = f.list(); System.out.println(Arrays.toString(list)); // 以文件数组的形式,返回当前文件夹下的所有文件(不包含子文件及子文件夹) File[] fs = f.listFiles(); System.out.println(Arrays.toString(fs)); // 以字符串形式返回获取所在文件夹 String parent = f.getParent(); System.out.println(parent); // 以文件形式返回获取所在文件夹 File parentFile = f.getParentFile(); System.out.println(parentFile.getName()); // 创建文件夹,如果父文件夹F:/2021/img/不存在,创建就无效 boolean mkdir = f.mkdir(); System.out.println(mkdir); // 创建文件夹,如果父文件夹F:/2021/ha不存在,就会创建父文件夹 boolean mkdirs = f.mkdirs(); System.out.println(mkdirs); // 创建一个空文件,如果父文件夹skin不存在,就会抛出异常 // 所以创建一个空文件之前,通常都会创建父目录 f.getParentFile().mkdirs(); try { boolean newFile = f.createNewFile(); System.out.println(newFile); } catch (IOException e) { e.printStackTrace(); } // 刪除文件 boolean delete = f.delete(); System.out.println(delete); // JVM结束的时候,刪除文件,常用于临时文件的删除 f.deleteOnExit();
字节流操作 FileInputStream 、FileOutputStream
File f = new File("F:/2021/doc/test.txt"); //文件-输入流-内存 读取 FileInputStream inputStream = null; try { inputStream = new FileInputStream(f); byte[] bytes = new byte[(int) f.length()]; inputStream.read(bytes); for (byte b : bytes) { System.out.print((char) b); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { if (inputStream != null) { try { inputStream.close(); } catch (IOException e) { e.printStackTrace(); } } } //try(自动会在finally关闭流) //内存-输出流-文件 写入 try (FileOutputStream outputStream = new FileOutputStream(f);) { byte[] data = {21, 22, 29, 127, -128, -100, 0}; outputStream.write(data); outputStream.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }
字符流操作 FileWriter、FileReader
File f = new File("F:/2021/doc/test.txt"); try (FileWriter writer = new FileWriter(f)) { char[] writeData = {'锅', '的', '中', 'A', '-', ')', '\"'}; writer.write(writeData); } catch (IOException e) { e.printStackTrace(); } try (FileReader reader = new FileReader(f)) { char[] data = new char[(int) f.length()]; reader.read(data); for (char c : data) { System.out.print(c); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }
缓存流操作BufferedReader、PrintWriter
File f = new File("F:/2021/doc/test.txt"); try (FileWriter writer = new FileWriter(f); PrintWriter printWriter = new PrintWriter(writer); ) { printWriter.println("dsadsadsada"); printWriter.println("\tdsadsadsada"); printWriter.println("中文字符"); printWriter.println("dsa特殊字符\\s \"a\"d\'a"); printWriter.println("dsa\ndsadsada"); } catch (IOException e) { e.printStackTrace(); } try (FileReader reader = new FileReader(f); BufferedReader bufferedReader = new BufferedReader(reader); ) { while (true) { String linData = bufferedReader.readLine(); if (linData == null) { break; } System.out.println(linData); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }
数据流DataInputStream、DataOutputStream
File f = new File("F:/2021/doc/test.txt"); try (FileOutputStream outputStream = new FileOutputStream(f); DataOutputStream dataOutputStream = new DataOutputStream(outputStream); ) { dataOutputStream.writeBoolean(false); dataOutputStream.writeChar('中'); dataOutputStream.writeDouble(0.1241504); dataOutputStream.writeInt(200); dataOutputStream.writeUTF("yich一串"); } catch (IOException e) { e.printStackTrace(); } try (FileInputStream inputStream = new FileInputStream(f); DataInputStream dataInputStream = new DataInputStream(inputStream); ) { boolean b = dataInputStream.readBoolean(); System.out.println(b); char c = dataInputStream.readChar(); System.out.println(c); double d = dataInputStream.readDouble(); System.out.println(d); System.out.println(dataInputStream.readInt()); System.out.println(dataInputStream.readUTF()); } catch (IOException e) { e.printStackTrace(); }
对象流 ObjectOutputStream、ObjectInputStream
File f = new File("F:/2021/doc/test.txt"); User user = new User(); user.setId(1001); user.setName("测试"); user.setAge(20); try ( FileOutputStream outputStream = new FileOutputStream(f); ObjectOutputStream objectOutputStream = new ObjectOutputStream(outputStream); FileInputStream inputStream = new FileInputStream(f); ObjectInputStream objectInputStream = new ObjectInputStream(inputStream); ) { objectOutputStream.writeObject(user); User user1 = (User) objectInputStream.readObject(); System.out.println(user1.getId()); System.out.println(user1.getName()); System.out.println(user1.getAge()); } catch (IOException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); }
浙公网安备 33010602011771号