泛型和IO流

什么是泛型?

1. 泛型就是限制我们得数据类型。

2.为什么使用泛型?
我们原来在定义集合时,是如下得定义方式:
        List list=new ArrayList();//该集合没有使用泛型
        list.add("java01");
        list.add("java02");

        String str= (String) list.get(0);//获取元素 需要进行强制类型转换
        System.out.println(str);
获取元素时,不方便对元

如何使用泛型

public static void main(String[] args) {
        List<String> list=new ArrayList<>();//这里就限制了集合中每个元素得类型。
        list.add("java01");
        list.add("hello"); //因为集合中只能添加String类型
        list.add("world"); //因为集合中只能添加String类型

        String s = list.get(0); //在获取元素时 默认就是相应得数据类型 而无需在进行转换

        //<K,V>:K:表示键得泛型  V:表示值得泛型
        HashMap<String,Integer> map=new HashMap<>();
        map.put("name",15);
        map.put("age",25);

        Set<String> keys = map.keySet();
    }

我们自己能否定义泛型类

public  class 类名<标识,标识....> {
     标识  变量名;
     
     public 标识 方法名(){
        
     }
     
     public void 方法名(标识 参数名){
     
     
     }
     .........

}

定义坐标类:

package com.ykq;

/**
 * @program: day05
 * @description:
 * @author: 闫克起2
 * @create: 2022-04-19 14:28
 **/
public class Test03 {
    public static void main(String[] args) {
        //在创建泛型类对象时没有指定相应得泛型类型。则默认为Object类型
        Point p1=new Point();
        p1.setX(15);
        p1.setX("北纬50度");

        //这里得泛型必须都是对象类型
        Point<Integer> p2=new Point<Integer>() ;
        p2.setX(25);
        p2.setY(65);
        Integer x = p2.getX();
        Integer y = p2.getY();
        p2.show();

        Point<String> p3=new Point<>();
    }
}
class Point<T>{
     private T x;
     private T y;

     public void show(){
         System.out.println("x坐标为:"+x+";y坐标为:"+y);
     }

    public T getX() {
        return x;
    }

    public void setX(T x) {
        this.x = x;
    }

    public T getY() {
        return y;
    }

    public void setY(T y) {
        this.y = y;
    }
}

File对象

1.file得介绍

File 类 就是当前系统中 文件或者文件夹的抽象表示 
    
通俗的讲  就是 使用File对象 来操作我们电脑系统中的文件或者文件夹

学习File类 其实就是学习 如果通过file对象 对系统中的文件/文件夹进行增删改查

2 .创建File对象

public static void main(String[] args) {
        //创建一个File对象 并指定文件得路径  \转移字符串
        File file01 = new File("D:\\AAA\\aaa.txt");

        /*
           \\目录层级  在window系统下层级分割符为\  但是在linux和mac系统上分割符为 /
           我们得java代码是一种跨平台得语言。 我们得开发在window  但是我们项目得部署在linux.
           我们使我们得代码能在任意系统下来用。 我们有两种解决办法
           (1)第一种 因为window 兼容 / 和 \
         */
        File file02 = new File("D:/AAA/bbb.txt");


        // 第二种 File.separator根据当前代码所在得系统自动获取相应得分割符 

        System.out.println(File.separator); // \因为我们当前在window下
        File file03 = new File("D:"+File.separator+"AAA"+File.separator+"ccc.txt");


    }

3 增加操作

package com.ykq;

import java.io.File;
import java.io.IOException;

/**
 * @program: day05
 * @description:
 * @author: 闫克起2
 * @create: 2022-04-19 14:53
 **/
public class Test05 {
    public static void main(String[] args) throws IOException {
        File file01 =new File("D:/AAA/aaaa.txt"); //创建File对象
        file01.createNewFile();//创建相应得文件

        File file02 = new File("D:/AAA/bbb");
        file02.mkdir();//创建目录 make directory 单层目录

        File file03 = new File("D:/AAA/ccc/fff");
        file03.mkdirs(); //创建多层目录

        File file04 = new File("D:/AAA/eee");
        file04.createNewFile();
        //使根据你调用得方法不同 而创建不同得类型
    }
}

4 删除

    public static void main(String[] args) throws InterruptedException {
        File file01 = new File("D:/AAA/a.txt");
        file01.delete();//删除文件

        File file02 = new File("D:/AAA/eee");
        file02.deleteOnExit(); // 当程序退出后 删除

//        Thread.sleep(5000); //休眠10秒

        File file03 = new File("D://AAA/bbb");
        file03.delete();//删除空目录
        
    }

5 修改

public static void main(String[] args) throws IOException {
        File file=new File("D:/AAA/c.txt");
        file.createNewFile();
//        file.setReadable(false);//设置该文件得权限为不能读
//        file.setWritable(false);//设置该文件不能写
//        file.setReadOnly();//设置只读得权限


        file.renameTo(new File("D:/AAA/d.txt"));//重命名


    }

6 查询

 public static void main(String[] args) {
        File file=new File("D:/AAA/ccc/fff/a.txt");

        String name = file.getName(); //得到文件得名称
        System.out.println("name======"+name);
        String parent = file.getParent(); //得到父级路径得名称
        System.out.println("parent===="+parent);
        String path = file.getPath(); //得到文件得路径名称
        System.out.println("path======"+path);

        boolean f1 = file.isFile(); //判断该文件对象是否为文件类型
        System.out.println("f1========="+f1);
        boolean f2 = file.isDirectory(); //判断该文件对象是否为目录类型
        System.out.println("f2========="+f2);


        File file2 = new File("D:/AAA");
        String[] list = file2.list(); //列出AAA目录下所有子文件得名称
        System.out.println(Arrays.toString(list));

        File[] files = file2.listFiles(); //列出AAA目录下所有文件对象
        for(File f:files){
            System.out.println(f.toString());
        }


    }

IO流

1. IO 表示有两个单词的缩写。
  I: Input 输入   O: Output 输出

2. IO的作用:就是对文件中的内容进行操作。 
  输入: 读操作(读取文件的内容)   输出: 写操作(往文件中写内容)
  
3. IO流的分类:

 (1)根据流的方向:
    ---输入流: 程序可以从中读取数据的流。
    ---输出流: 程序能向其中写入数据的流。
    
 (2)根据流的单位:
    ---字节流: 以字节为单位传输数据的流
    ---字符流: 以字符为单位传输数据的流
 
 (3)根据功能
    ---节点流: 直接和文件进行交互
    ---处理流: 不是直接作用在文件上。
    
四个基本的流: 其他的流都是在这四个流的基础上进行扩展的
        字节输入流
        字节输出流 
    
        字符输入流
        字符输出流

1 Writer字符输出流

public static void main(String[] args) throws Exception{
        //字符输出流 ---指定对哪个文件(路径)进行写操作
        Writer  writer=new FileWriter("D:/AAA/d.txt");

        String str="hello AAA 今天要开演唱会";
        writer.write(str);

        writer.flush(); //刷新流
        writer.close(); //关闭流资源
    }

上面每次往文件中写内容时 就会把原来的内容覆盖了。 如何追加内容

public static void main(String[] args) throws Exception{
        //字符输出流 ---指定对哪个文件(路径)进行写操作
        //true:表示允许追加内容到文件中
        Writer  writer=new FileWriter("D:/AAA/d.txt",true);

        String str="Hello 刘德华 今天请来了";
        writer.write(str);

        writer.flush(); //刷新流
        writer.close(); //关闭流资源
    }

2 Reader字符输入流

public static void main(String[] args) throws Exception {
         //创建字符输入流对象. 作用:就是读取aaaa.txt里的内容
         Reader reader=new FileReader("D:/AAA/aaaa.txt");
         int count=0;//表示读取字符的个数
         char[] cs=new char[10]; //每次读取到元素存入该数组中
         while( (count=reader.read(cs)) !=-1 ){
                String str=new String(cs,0,count);
                System.out.print(str);
         }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值