知识点
I -- InputO -- Output * InputStream 输入流 * OutputStream 输出流 * * 以 流(作为载体) 的方式处理 数据 * * 字节码 主要应用于媒体文件处理 图片 语音 视频... 也可以处理文字 但效率没有字符码效率高 * 字符码 主要应用于文字的处理 * * File类 * 创建文件 * File类 * 查看API * 文件和目录路径名的抽象表示形式。 * * boolean createNewFile() * 当且仅当不存在具有此抽象路径名指定名称的文件时,不可分地创建一个新的空文件。 * * boolean delete() * 删除此抽象路径名表示的文件或目录。 * * boolean exists() * 测试此抽象路径名表示的文件或目录是否存在。 * * String getAbsolutePath() * 返回此抽象路径名的绝对路径名字符串。 绝对路径 * * String getName() * 返回由此抽象路径名表示的文件或目录的名称。 * * String getParent() * 返回此抽象路径名父目录的路径名字符串;如果此路径名没有指定父目录,则返回 null。 * * File getParentFile() * 返回此抽象路径名父目录的抽象路径名;如果此路径名没有指定父目录,则返回 null。 * * String getPath() * 将此抽象路径名转换为一个路径名字符串。相对路径 * * boolean isAbsolute() * 测试此抽象路径名是否为绝对路径名。 * boolean isDirectory() * 测试此抽象路径名表示的文件是否是一个目录。 * boolean isFile() * 测试此抽象路径名表示的文件是否是一个标准文件。 * boolean isHidden() * 测试此抽象路径名指定的文件是否是一个隐藏文件。 * * String[] list() * 返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录。 * * boolean mkdir() * 创建此抽象路径名指定的目录。 * boolean mkdirs() * 创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。 * */public class FileTest { public static void main(String[] args) { createFile(); //deleteFile("/Users/dllo/Desktop/homeWork"); } private static void createFile() { //在桌面上创建一个文件夹 //创建文件夹 参数是路径 File file1 = new File("/Users/dllo/Desktop/luke_file"); //判断文件或文件夹是否存在 若不存在 返回false !false --->true if (!file1.exists()) { file1.mkdir(); } //创建多个文件夹 嵌套关系 File file2 = new File("/Users/dllo/Desktop/luke_file2/ada/asd/dd"); if (!file2.exists()) { file2.mkdirs(); } //创建文件 File file3 = new File("/Users/dllo/Desktop/luke_file/ppp.png"); if (!file3.exists()) { try { file3.createNewFile(); //文件生成 createNewFile() } catch (IOException e) { e.printStackTrace(); } } //快速创建 //若想用这种方式创建文件 那么必须保证路径的正确(必须有该文件夹) //java 推荐使用 File file4 = new File("/Users/dllo/Desktop/luke_file/", "aaa.txt"); try { file4.createNewFile(); } catch (IOException e) { e.printStackTrace(); } /** * 打印各个文件的相对路径和绝对路径 * * 删除文件 */ /** * 绝对路径 是最具体的路径 * 相对路径 是相对工程而言的 */ System.out.println(file1.getAbsolutePath()); System.out.println(file1.getPath());// System.out.println(file2.getAbsolutePath());// System.out.println(file2.getPath());// System.out.println(file3.getAbsolutePath());// System.out.println(file3.getPath()); File file5 = new File("luke/小说.txt"); // 工程下创建文件 相对路径 System.out.println(file5.getPath()); //相对路径 System.out.println(file5.getAbsolutePath()); } private static void deleteFile(String path) { /** * 根据路径删除文件,文件夹 */ File file = new File(path); if (!file.exists()){ System.out.println("该文件不存在"); //直接结束此方法 return; } //判断要删除的东西是否为文件 若是 则直接删除 if (file.isFile()){ file.delete(); } //判断要删的东西是否为文件夹 if (file.isDirectory()){ //获取文件夹里的所有内容 注意是File[] 集合 File[] files = file.listFiles(); for (File file1 : files) { //递归删除 deleteFile(file1.getAbsolutePath()); } file.delete(); } }}
*工程下创建文件*读写 IO* 按类型分 * 字节流 字符流 * * 按方向分 * 输入流 输出流
public class Main { public static void main(String[] args) { /** * 需求: * 1.读取某一文件里的内容 * 2.将某一字符串写成一个文件 * 3.读取一个文件里面的内容并且复制到另一个文件中 * */ read("/Users/dllo/Desktop/地址"); write("luke/aaa"); } private static void write(String outPath) { File file = new File(outPath); try { //创建输出流 FileOutputStream fos = new FileOutputStream(file); System.out.println("请输入要输出的内容"); //创建一个字符串 String str = new Scanner(System.in).next(); //将字符串转化成字节数组 再进行写操作 fos.write(str.getBytes()); fos.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } private static void read(String path) { //获取要读的文件 File file =new File(path); //创建输入流 try { FileInputStream fis = new FileInputStream(file); byte[] bytes = new byte[1024]; //记录每次读取数据的长度,(位置) int length = 0 ; String result = ""; while ((length = fis.read(bytes))!= -1){ //参数1 要拼接的数组 参数2 起始位置 参数3 结束位置 String str = new String(bytes,0,length); result += str; System.out.println(result); } //最后一定要!!!! 关流 // 先入后出 先创建的后关 后创建的先关 fis.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }}