0
点赞
收藏
分享

微信扫一扫

泛型 File对象 IO流

科牛 2022-04-20 阅读 35
java

泛型

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

使用泛型

List<类型> list=new ArrayList<类型>(); 只能在该集合中存储指定得类型。

public class Demo01 {
    public static void main(String[] args) throws IOException {
        //没有指定类型  可以存放任意类型数据
        List list = new ArrayList();
        list.add("java1");
        list.add("java2");
        list.add("java3");
        list.add("java4");
        //获取数据需要强制转换
        String a = (String) list.get(0);
        System.out.println(a);

    }
}
===================================================================
public class Demo02 {
    public static void main(String[] args) {
        //jdk1.7以后new后<>可以省略
        //限制了集合中每个数据的类型
        List<String> list = new ArrayList<>();
        list.add("java01");
        list.add("java02");
        list.add("java03");
        list.add("java04");
        //在获取集合中元素时,默认就是相应的类型 无需在进行转换
        String s = list.get(0);
        System.out.println(s);

        //<K,V>  K表示键的泛型 V 表示值的泛型
        Map<String,Integer> map = new HashMap<>();
        map.put("小明",12);

    }
}

自定义泛型类

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

}

例:定义坐标 

public class Demo03 {
    public static void main(String[] args) {
        //在创建泛型类对象时没有指定相应泛型类型,默认为Ob
        Point<String> point = new Point();
        point.setX("12");
        point.setY("12");
        point.show();

    }
}
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对象

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

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

创建File对象

1. 在磁盘准备一个目录AAA。对文件得操作都放在该目录下。

public class Demo04 {
    public static void main(String[] args) throws IOException {
        //创建File对象
        File file = new File("D:/AAA/aaa.txt");
        //第二种  File.separator
        File file1 = new File("D:"+File.separator+"AAA"+File.separator);
        

    }
}

增加操作

        file.createNewFile();//创建文件

        File file2 = new File("D:/AAA/aaa");
        file2.mkdir();//创建目录 make directory  单机目录

        File file3 = new File("D:/AAA/aaa/bbb");
        file3.mkdirs();//多级目录

 删除操作

public class Demo05 {
    public static void main(String[] args) throws InterruptedException {
        File file = new File("D:/AAA/aaa.txt");
        file.delete();//删除空目录

        File file1 = new File("D:/AAA/aaa/bbb");

        file1.deleteOnExit();//程序退出时删除
        Thread.sleep(5000);//程序休眠5s
    }
}

修改操作

public class Demo06 {
    public static void main(String[] args) throws IOException {
        File file = new File("D:/AAA/a.txt");
        file.createNewFile();

        file.setReadable(false);//设置该文件的权限为不能读
        file.setWritable(false);//设置文件不能写
        file.setReadOnly();//设置只读权限

        file.renameTo(new File("C:/AAA/c.txt"));
    }
}

查询操作

public class Demo07 {
    public static void main(String[] args) {
        File file = new File("D:/AAA/c.txt");
        String name = file.getName();//获取文件名称
        System.out.println(name);
        String parent = file.getParent();//获取父级目录名称
        System.out.println(parent);
        String path = file.getPath();//获取文件路径的名称
        System.out.println(path);

        boolean file1 = file.isFile();//判断是否是文件类型
        System.out.println(file1);
        boolean directory = file.isDirectory();//判断是否是目录类型
        System.out.println(directory);

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

        for (File f:files
             ) {
            System.out.println(f);
        }
    }
}

经典题目:

获取指定目录下所有文件

递归调用

public class Demo08 {
    public static void main(String[] args) {
        show("D:/AAA");
    }
    public static void show(String path){
        File file = new File(path);
        //判断文件是否存在 目录是否存在
        if (!file.exists()||!file.isDirectory()){
            return;
        }
        File[] files = file.listFiles();

        for (File f:files
             ) {
            if (f.isDirectory()){
                System.out.println(f.getPath()+"dir");
                show(f.getPath());
            }else {
                System.out.println(f.getPath());
            }
        }
    }
}

IO流

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

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

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

 

 

Writer字符输出流

它是所有字符输出流的跟类。---FileWriter类

public class TestWriter {
    public static void main(String[] args) throws IOException {
        //字符输出流   指定对哪个文件(路径)进行操作
        //true 表示对内容进行追加到文件
        Writer writer = new FileWriter("D:/AAA/b.txt",true);
        String str ="BBBB";
        writer.write(str);

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

Reader字符输入流

它是所有字符输入流的根类  它的实现类有很多,我们使用FileReader实现类

public class TestReader {
    public static void main(String[] args) throws IOException {
        Reader reader = new FileReader("D:/AAA/b.txt");

        //char read = (char) reader.read();//每次读取一个字符 返回读取的内容
        //System.out.println(read);

        char[] chars = new char[20];
        int read = reader.read(chars);
        String str = new String(chars);
        //System.out.println(read);
        //System.out.println(Arrays.toString(chars));
        System.out.println(str);


    }
}
public class Demo09 {
    public static void main(String[] args) throws IOException {
        Reader reader = new FileReader("D:/AAA/d.txt");
        int count= 0;
        char[] chars = new char[10];
        //int read = reader.read(chars);//读取字符的个数  将读取到的字符存入数组
        while ((count = reader.read(chars))!=-1){
            String str = new String(chars,0,count);
            System.out.print(str);
        }


    }
}

 

举报

相关推荐

Java--IO流(File对象)

IO流:File类

File和File的IO流

FILE类与IO流

JAVA-File、iO流

File类和IO流

File类、IO流(部分)

0 条评论