JAVA基础13_异常处理,File类,IO流,输入流比较标准的写法

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

    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值