package com.h; import java.io.File; import java.io.IOException; public class Test_exceptionDemo { /** * 异常:通过异常的继承关系可以判断是运行时异常还是编译时异常 * * File的构造方法: * File(File parent, String child) * 从父抽象路径名和子路径名字符串创建新的 File实例。 * File(String pathname) * 通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例。 * File(String parent, String child) * 从父路径名字符串和子路径名字符串创建新的 File实例。 * * File的创建功能: * createNewFile() * 当且仅当具有该名称的文件尚不存在时,原子地创建一个由该抽象路径名命名的新的空文件。 * 成功返回true,文件存在创建失败返回false * boolean mkdir() * 创建由此抽象路径名命名的目录。 * 成功返回true,目录存在创建失败返回false * boolean mkdirs() * 创建由此抽象路径名命名的目录,包括任何必需但不存在的父目录。 * 成功返回true,目录存在创建失败返回false * * 创建多级目录下的文件要先创建目录再创建文件 * *相对路径和绝对路径: * 相对路径是对于项目的基础路径来说的。 * *File的删除delete * A.目录和文件都是用delete删除; * B.多级目录删除要先删文件,才可以删除目录 * *File的判断和获取 * A.判断 * a.f3_1.isDirectory();判断是否是目录 * b.f3_1.isFile();判断是否是文件 * c.f3_1.exists();判断是否存在 * B.获取 * a.f3_1.getAbsoluteFile();获取绝对路径 * b.f3_1.getPath();获取相对路径 * c.f3_1.getName();获取文件名字 * * */ public static void main(String[] args) throws IOException { // File f3_1 = new File("d:\\aa\\bb"); // File f3_2 = new File(f3_1,"bb.txt"); // // System.out.println("mkdirs"+"-------------"+f3_1.mkdirs()); // System.out.println("createNewFile"+"-------------"+f3_2.createNewFile()); File f3_2 = new File("aa"); File f3_1 = new File("aa\\a.txt"); f3_1.isDirectory(); f3_1.isFile(); f3_1.exists(); f3_1.getAbsoluteFile(); f3_1.getPath(); f3_1.getName(); // System.out.println(f3_2.mkdirs()); // System.out.println(f3_1.createNewFile()); System.out.println(f3_2.delete()); } }
package com.h; import java.io.*; import java.nio.charset.StandardCharsets; import java.util.Arrays; public class Test_Io { /** * IO流:用来处理设备间数据传输问题。 * 如:文件上传下载,文件复制。 * * 分类:输入流,输出流,字节流,字符流(输入输出流要站在JAVA程序的角度看,字符流就是汉字可以直接用Windows记事本打开能够读懂,图片格式用记事本打开读不懂的是字节流) * * FileOutputStream * FileOutputStream fos = new FileOutputStream("aa.txt"); * 字节流写数据的过程: * A.创建字节输出流对象 * B.调用写数据的方法(65:A,66:B) * C.释放资源 * * 字节流写数据的三种方式: * void write(byte[] b) * 将 b.length个字节从指定的字节数组写入此文件输出流。 * void write(byte[] b, int off, int len) * 将 len字节从位于偏移量 off的指定字节数组写入此文件输出流。 * void write(int b) * * 字节流数据换行: * 写入换行符号即可(高级记事本这三个符号都可以识别): * Windows:/r/n * linux:/n * mac:/r * * 追加写入: * FileOutputStream(File file, boolean append) * 创建文件输出流以写入由指定的 File对象表示的文件。 * * 字节流写数据标准异常处理: * FileOutputStream fos = null; * try { * fos = new FileOutputStream("aa.txt"); * fos.write("hello".getBytes(StandardCharsets.UTF_8)); * } catch (IOException e) { * e.printStackTrace(); * } finally { * if(fos != null) { * try { * fos.close(); * } catch (IOException e) { * e.printStackTrace(); * } * } * } * * * 字节流读数据: * * A.一次一个字节的读取 * FileInputStream fis = new FileInputStream("bb.txt"); * int by;//read读到的byte码值是一个数字 * while ((by=fis.read()) != -1){//每次读都判断是否结尾,结尾为-1 * System.out.print((char)by);//强转为char类型读出字符 * } * fis.close(); * * B.一次读取一个字节数组的数据 * read(byte[] b) * 从该输入流读取最多 b.length个字节的数据为字节数组。 * * FileInputStream fis = new FileInputStream("bb.txt"); * byte[] bys = new byte[1024];//标准的读只能读1024的整数倍数 * int len; * while (-1 != (len = fis.read(bys))){//read方法返回-1代表后面没有数据了 * System.out.println(new String(bys,0,len));//每次只转换对应长度的byte到字符串 * } * fis.close(); * */ public static void main(String[] args) throws IOException { // FileOutputStream fos = new FileOutputStream("aa.txt"); // // fos.write(65); // fos.write(66); // fos.close(); // FileOutputStream fos = new FileOutputStream(new File("bb.txt")); // fos.write("ABCDEFG".getBytes(StandardCharsets.UTF_8)); // fos.close(); // FileOutputStream fos = null; // // try { // fos = new FileOutputStream("aa.txt"); // fos.write("hello".getBytes(StandardCharsets.UTF_8)); // } catch (IOException e) { // e.printStackTrace(); // } finally { // if(fos != null) { // try { // fos.close(); // } catch (IOException e) { // e.printStackTrace(); // } // } // } // FileInputStream fis = new FileInputStream("bb.txt"); // int by;//read读到的byte码值是一个数字 // while ((by=fis.read()) != -1){//每次读都判断是否结尾,结尾为-1 // System.out.print((char)by);//强转为char类型读出字符 // } // fis.close(); FileInputStream fis = new FileInputStream("bb.txt"); byte[] bys = new byte[1024];//标准的读只能读1024的整数倍数 int len; while (-1 != (len = fis.read(bys))){ System.out.println(new String(bys,0,len));//每次只转换对应长度的byte到字符串 } fis.close(); } }