首页 > 其他分享 >输入输出(I/0)流

输入输出(I/0)流

时间:2024-08-18 09:53:14浏览次数:12  
标签:String 输入输出 System File new public out

一、 File: 是所有文件或者文件夹的路径抽象表现形式

file自动重写了toString方法,所以直接打印显示的是file内容

    构造方法:
        public File(String pathname)
        public File(String parent,String child)
        public File(File parent,String child)

参考用法:

public class FileDemo1 {
    public static void main(String[] args) {
        // 将未来要操作的路径封装成File对象
        /*
            路径:
                绝对路径(完整路径):指的是带有盘符的路径【在windows】
                    举例:D:\projects\IDEAProjects\bigdata31-java\src\day16\data\a.txt
                相对路径:相对于该项目而言,将该项目作为开始
                    举例:src/day16/data/a.txt

         */
        //public File(String pathname)
        File file = new File("D:\\projects\\IDEAProjects\\bigdata31-java\\src\\day16\\data\\a.txt");
        System.out.println(file);
        File file2 = new File("src/com/shujia/day16/data/a.txt");
        System.out.println(file2);

        //public File(String parent,String child)
        File file3 = new File("D:\\projects\\IDEAProjects\\bigdata31-java\\src\\day16\\data","a.txt");
        System.out.println(file3);

        //public File(File parent,String child)
        File file4 = new File(new File("D:\\projects\\IDEAProjects\\bigdata31-java\\src\\day16\\data"),"a.txt");
        System.out.println(file4);



    }
}

File类中的成员方法如下:

       创建功能
            public boolean createNewFile()
            public boolean mkdir()
            public boolean mkdirs()
        删除功能
            public boolean delete()
        重命名功能
            public boolean renameTo(File dest)

参考用法:

public class FileDemo2 {
    public static void main(String[] args) throws Exception{
        //D:\bigdata31\day16\shujia.txt
        File file = new File("D:\\bigdata31\\day16\\shujia.txt");

        //public boolean createNewFile() 创建一个文件 若文件已经存在,返回false,否则创建文件返回true
        System.out.println(file.createNewFile());

        //public boolean mkdir() 创建单级目录
        File file1 = new File("D:\\bigdata31\\day16\\aaa\\bbb\\ccc");
       System.out.println(file1.mkdir());
        System.out.println(file1.createNewFile());
        System.out.println(file1.mkdir());

        //public boolean mkdirs() 创建多级目录
        System.out.println(file1.mkdirs());

        // public boolean delete() 既可以删除某一个文件也可以删除单级文件夹
        File file2 = new File("D:\\bigdata31\\day16\\bbb");
        System.out.println(file2.delete());

        File file3 = new File("D:\\bigdata31\\day16\\aaa");
        System.out.println(file3.delete());

        //public boolean renameTo(File dest) 对文件或者文件夹重命名
        File file4 = new File("D:\\bigdata31\\day16\\小小.txt");
        System.out.println(file.renameTo(file4));

    }
}
 判断功能
        public boolean isDirectory()  是否是文件夹
        public boolean isFile()          是否是文件
        public boolean exists()         是否存在
        public boolean canRead()    是否可读
        public boolean canWrite()   是否可写
        public boolean isHidden()   是否被隐藏

 

参考用法:

public class FileDemo3 {
    public static void main(String[] args) {
        File file4 = new File("D:\\bigdata31\\day16\\魏一民.txt");

        //public boolean isDirectory() 是否是文件夹
        System.out.println(file4.isDirectory());

        //public boolean isFile() 是否是文件
        System.out.println(file4.isFile());

        //public boolean exists() 是否存在
        System.out.println(file4.exists());

        //public boolean canRead() 是否可读
        System.out.println(file4.canRead());

        //public boolean canWrite() 是否可写
        System.out.println(file4.canWrite());

        //public boolean isHidden() 是否被隐藏
        System.out.println(file4.isHidden());
    }
}
 基本获取功能
        public String getAbsolutePath() 获取完整路径
        public String getPath()                获取相对路径
        public String getName()              获取文件或者文件夹的名字
        public long length()                     获取文件内容字节数
        public long lastModified()           最近一次修改时间 获取的是毫秒级别的时间戳

参考如下:

public class FileDemo4 {
    public static void main(String[] args) {
        File file = new File("src/com/shujia/day16/data/a.txt");

        System.out.println(file.getAbsolutePath()); // 获取完整路径

        System.out.println(file.getPath()); // 获取相对路径

        System.out.println(file.getName()); // 获取文件或者文件夹的名字

        System.out.println(file.length()); // 获取文件内容字节数

        File file1 = new File("D:\\bigdata31\\day16\\哈哈.txt");
        long l = file1.lastModified(); // 最近一次修改时间 获取的是毫秒级别的时间戳
        Date date = new Date(l);
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日,  HH:mm:ss");
        String time = simpleDateFormat.format(date);
        System.out.println("上一次修改时间:"+time);

    }
}
 高级获取功能
        public String[] list()     列出当前目录下所有的文件及文件夹的名称,组成的数组
        public File[] listFiles() 列出当前目录下所有的文件及文件夹的File对象

参考如下:

public class FileDemo5 {
    public static void main(String[] args) {
        File file = new File("src/com/shujia/day16");


        //public String[] list() 列出当前目录下所有的文件及文件夹的名称,组成的数组
        String[] names = file.list();
        System.out.println(Arrays.toString(names));

        System.out.println("--------------------------");
        //public File[] listFiles() 列出当前目录下所有的文件及文件夹的File对象
        File[] files = file.listFiles();

        // 断言
        assert files!=null;

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

        if(files!=null){
            for (File file1 : files) {
                System.out.println(file1);
            }
        }
    }
}

 二、 字节输入流:FileInputStream

构造方法:
        FileInputStream(File file)
        FileInputStream(String name)

参考使用:

public class FileInputStreamDemo1 {
    public static void main(String[] args) throws Exception{
        //FileInputStream(File file) 将要进行读取的文件封装成File对象放入到构造方法
        //输入必须要求目标文件要已经存在,不然报错
       File file = new File("src/day16/data/a3.txt");
      FileInputStream fis = new FileInputStream(file);

        //FileInputStream(String name)
        FileInputStream fis = new FileInputStream("src/day16/data/a3.txt");


        fis.close();
    }
}

 FileInputStream读数据的方法:
        public int read()
        public int read(byte[] b)

参考使用:

public class FileInputStreamDemo2 {
    public static void main(String[] args) throws Exception {
        //创建字节输入流对象
        FileInputStream fis = new FileInputStream("src/com/shujia/day16/data/a3.txt");

        //public int read() // 一次只读取一个字节
        System.out.println((char) fis.read());
       System.out.println((char) fis.read());
        System.out.println((char) fis.read());
       System.out.println((char) fis.read());
       System.out.println(fis.read());
       int i = 0;
        while ((i = fis.read()) != -1) {
          System.out.print((char) i);
     }

        //public int read(byte[] b)
        //创建一个字节数组
        byte[] bytes = new byte[1024];
        int length = fis.read(bytes); // 返回的是实际读取到的字节数
        //字节数组转字符串
        String s = new String(bytes,0,length);
        System.out.println(s);

        byte[] bytes = new byte[2];
       //第一次读
       int length = fis.read(bytes); // 返回的是实际读取到的字节数
        //字节数组转字符串
        String s = new String(bytes,0,length);
        System.out.print(s);

        //第二次读
        int length2 = fis.read(bytes); // 返回的是实际读取到的字节数
        //字节数组转字符串
        String s2 = new String(bytes,0,length2);
       System.out.print(s2);
        //第三次读
       int length3 = fis.read(bytes); // 返回的是实际读取到的字节数
        //字节数组转字符串
       String s3 = new String(bytes,0,length3);
       System.out.print(s3);

        //使用while循环读取
        byte[] bytes = new byte[1024];
        int length = 0;
        while ((length = fis.read(bytes)) != -1) {
            String s = new String(bytes, 0, length);
            System.out.print(s);
        }


        //释放资源
        fis.close();
    }
}

 三、 字节输出流:FileOutputStream

FileOutputStream:
        构造方法:
            FileOutputStream(File file)
            FileOutputStream(String name)

参考方法:

public class FileOutputStreamDemo1 {
    public static void main(String[] args) throws Exception{
        //FileOutputStream(File file) 需要先将目标文件封装成一个File对象放入到构造方法
//        File file = new File("src/day16/data/a2.txt");
//        //若写入的目标文件不存在的话,会自动创建一个
//        FileOutputStream fos = new FileOutputStream(file);

        //FileOutputStream(String name)
        FileOutputStream fos = new FileOutputStream("src/day16/data/a2.txt");
        System.out.println(fos);


    }
}

 FileOutputStream写数据的方法:

    public void write(int b)
    public void write(byte[] b)
    public void write(byte[] b,int off,int len)

参考使用:

public class FileOutputStreamDemo2 {
    public static void main(String[] args) {
        FileOutputStream fos = null;
        try {
            fos = new FileOutputStream("src/com/shujia/day16/data/a3.txt");

            //public void write(int b)
            //写一个字节
//             fos.write(97);
//             fos.write(98);
//             fos.write(99);
//             fos.write(100);

            //public void write(byte[] b) // 一次写一个字节数组
            byte[] bytes = {97, 98, 99, 100, 101, 102, 103};
//            fos.write(bytes);

            //public void write(byte[] b,int off,int len) 一次写字节数组的一部分
            fos.write(bytes,2,3);

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            //释放写数据资源
            if (fos != null) {
                try {
                    fos.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

    }
}
        1、怎么实现追加写?
        2、怎么实现换行?

参考使用:

public class FileOutputStreamDemo3 {
    public static void main(String[] args) throws Exception {
        //若文件已经存在,会将文件中的内容清空,若想要实现追加,在传入路径之后,append属性给true
        FileOutputStream fos = new FileOutputStream("src/com/shujia/day16/data/a3.txt",true);

        fos.write("\r\n".getBytes());

        fos.write(110);
        fos.write(111);
        fos.write(112);



        fos.close();

        //释放资源之后无法再继续使用了
//        fos.write(113);


    }
}

四、缓冲(字节)输入输出流:

缓冲(字节)输入流:BufferedInputStream

创建对象的方式:BufferedInputStream bis = new BufferedInputStream(new FIleInputStream("路径"))

特点:

缓冲(字节)输出流:BufferedOutputStream

创建对象的方式:  BufferedOutputStream bos = new BufferedOutputStream(new   FileOutputStream("路径"))

特点:

五、字符输入和输出流

抽象父类:(输入父类)Reader、(输出父类)Writer

字符输入流的具体实现子类和用法:

字符输入流:InputStreamReder

字符缓冲(输入)流的具体实现子类和用法:

缓冲流:BufferedReder

字符输出流的具体实现子类和用法:

字符输出流:InputStreamWriter

注意:简化版后的字符缓冲输出流,就不能添加或设定字符集,有没有append属性来添加true

缓冲流:BufferedWriter

标签:String,输入输出,System,File,new,public,out
From: https://blog.csdn.net/ABU009/article/details/141230443

相关文章

  • 用输入输出流(I/O)流,递归复制和删除多级文件
    一、(I/O)流递归复制一个文件第一种:elseif语句过多,看起来冗余,优点:多级文件一次性复制完整importjava.io.*;//数据源:src/main/java/day15_8_13/haha//目标;src/main/java/LaJipublicclassDiGuiCopy{publicstaticvoidmain(String[]args)throwsException{......
  • 输入输出-python
    输入输出-python输入输出输入Python提供了input()函数用于从控制台输入数据。name=input("请输入您的姓名:")print("您输入的姓名是:",name)输出Python提供了print()函数用于输出数据到控制台。print("Hello,world!")print()函数可以接受多个参数,并用空格分隔。prin......
  • C++标准库 iomanip 输入输出操纵符 Manipulator
    输入/输出操纵符输入输出操纵符是C++中用于控制输入输出流格式的一组特殊函数或对象。它们通常用于格式化输出,例如设置宽度、精度、对齐方式等,而不涉及数据的实际读写。功能概述:输入输出操纵符能够控制输出的外观,比如调整对齐方式、设置输出的宽度和精度、控制换行等。使用......
  • C++:命名空间与输入输出
    目录前言一、命名空间1.1namespace的价值1.2namespace的定义1.3命名空间的使用二、C++输入&输出前言   C++是一种面向对象的计算机程序设计语言,‌它扩展了C语言的功能,‌并引入了面向对象编程的概念,‌如类、‌继承和多态等,C++是以C语言为基础进行了拓展与创新,C......
  • C语言问答进阶--2、C语言简介及基本的输入输出函数
    C语言简介Q:您好,能大体介绍下C语言吗?A:当然可以。C语言是一种计算机语言,它主要被用在系统编程里,可以说,C语言的产生就和操作系统的编写密不可分。【C语言简要历史】1978年由美国电话电报公司(AT&T)的贝尔实验室正式发表了C语言。同时由B.W.Kernighan和D.M.Ritchie合著了著......
  • Linux标准输入输出与重定向、管道技术
    Linux标准输入输出与重定向、管道技术1.标准输入输出1.1概念每个Linux程序执行时,默认打开三个标准文件描述符:标准输入(STDIN):文件描述符为0,通常对应终端键盘。标准输出(STDOUT):文件描述符为1,默认输出到屏幕。错误输出(STDERR):文件描述符为2,默认输出到屏幕。1.2示例cat......
  • Profinet远程IO模块:模拟量输入输出模块_参数及选型说明
    模拟量输入、输出模块是XD系列现场常用的IO模块。分为输入和输出两种类型,按照信号类型分为电压型和电流型,16位分辨率,通道分为4通道和8通道!产品型号信息模块指示灯模拟量量程对应数值(以下为4通道型号,8通道同理)XD3004的使用注:默认配置1:0-10V。(1).配置参数1:0-10v,输入1......
  • STM32之GPIO(General Purpose Input/Output,通用型输入输出)
    文章目录前言一、GPIO简介二、GPIO结构2.1GPIO基本结构2.2GPIO位结构2.2.1输入部分2.2.1输出部分四、GPIO模式4.1浮空/上拉/下拉输入4.2模拟输入4.3开漏/推挽输出4.4复用开漏/推挽输出前言提示:本文主要用作在学习江协科大STM32入门教程后做的归纳总结笔......
  • 字符专用输入输出函数 getchar() putchar()
    文章目录一、字符专用接收函数1.1scanf实现字符接收1.2字符专用接收函数getchar1.3练习1.4利用循环使字符接收函数接收字符串的元素二、字符专用输出函数2.1printf实现打印字符2.2字符专用输出函数putchar提示:以下是本篇文章正文内容,下面案例可供参考一、字......
  • 实现一个终端文本编辑器来学习golang语言:第二章Raw模式下的输入输出
    从第二章开始,在每个小节的最后都会有一些代码实操作业,你可以选择自己完成(比较推荐),再对照我的实现方式,当然也可以直接看我的代码实现。不过,之后的各个功能实现,我都会基于我先前的代码实现版本,在它的基础上进行扩展。首先,我们先来解决第一章遗留的第一个问题:输入数据会被stdin缓存......