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();
}
}