JavaSE基础之 IO流
知识点
I -- Input
O -- 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(); } } }