【Java EE 初阶】文件操作

这篇具有很好参考价值的文章主要介绍了【Java EE 初阶】文件操作。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1.什么是文件?

1.在cmd中查看指定目录的树形结构语法

2.文件路径

从当前目录开始找到目标程序(一个点)

返回到上一级目录,再找目标程序(两个点)

2.Java中文件操作

1.File概述

1.属性

2. 构造方法

3.常用方法

 代码展示:

4.常用方法2

3. 文件内容的读写---数据流

1.InputStream概述

2. FileInputStream

构造方法:

 1.输入数据到文件

3.字符流的输出流

4.Scanner类

5.printWrite类

 4.练习扫描文件并删除

1.步骤

2.代码:

3.结果

 4.进行普通文件的复制

1.步骤

2.代码:

3.结果: 


1.什么是文件?

1.狭义上的文件

硬盘上保存的数据,都是“文件”来组织的,本质上都是二进制或是字符组织的数组,被打包成一个文件存在硬盘上。常见的文件有图片(png),文本(txt),可执行文件(exe)等

【Java EE 初阶】文件操作

2.广义上的文件

操作系统的主要功能就是对计算机资源进行统一管理与分配。对于Linux来说,所有的计算设备都会被描述(抽象)成文件。(例如:网卡,键盘,打印机)等

【Java EE 初阶】文件操作

【Java EE 初阶】文件操作 

树形结构组织随着文件越来越多,如何进行文件的组织呢?就是按照层级结构进行组织---也就是数据结构中的树形结构。而我们平时所谓的文件夹或者目录,就是专门用来存放管理信息的

3.在cmd中查看指定目录的树形结构

tree 文件名

2.文件路径

绝对路径:从根目录开始一直到目标程序的表示方式

相对路径:从当前目录开始,表示目标程序路径的方式

从当前目录开始找到目标程序(一个点)

语法:.+目标程序目录

返回到上一级目录,再找目标程序(两个点)

语法: ..+目标程序目录

2.Java中文件操作

【Java EE 初阶】文件操作

  • 输入输出是以内存为参照物的,
  • 输入指的是从外部输入到内存,
  • 输出指的是把内存中的数据输出到外部(磁盘,网卡等)

1.File概述

1.属性

根据不同的系统返回系统默认的分隔符

【Java EE 初阶】文件操作

2. 构造方法

【Java EE 初阶】文件操作

一般常用第二种 

        File file = new File("D:\\temp");
        File file1 = new File("D:/temp");

反斜杠需要进行转义

3.常用方法

【Java EE 初阶】文件操作

 代码展示:

public static void main(String[] args) throws IOException {
        // 指定绝对或相对路径并创建一个File对象
        File file = new File(".\\src\\main\\resources\\static\\image");
        // 获取父目录
        System.out.println(file.getParent());
        // 获取文件名
        System.out.println(file.getName());
        // 获取路径
        System.out.println(file.getPath());
        // 获取绝对路径
        System.out.println(file.getAbsolutePath());
        // 获取一个标准路径
        System.out.println(file.getCanonicalPath());
        // 获取是否已存在
        System.out.println(file.exists());
        // 获取是不是一个文件
        System.out.println(file.isFile());
        // 获取是不是一个目录
        System.out.println(file.isDirectory());

    }

平常我们使用标准路径获得的路径比较整洁

4.常用方法2

【Java EE 初阶】文件操作

1.创建一个文件

    public static void main(String[] args) throws IOException {
        File file = new File("D:\\temp\\test\\hello.txt");
        boolean res = file.createNewFile();
        if (res) {
            System.out.println("创建成功!");
        } else {
            System.out.println("创建失败");
        }
    }

【Java EE 初阶】文件操作

 2.删除一个文件

    public static void main(String[] args) throws IOException {
        File file = new File("D:\\temp\\test\\hello.txt");
        boolean res = file.delete();

        if (res) {
            System.out.println("删除成功!");
        } else {
            System.out.println("删除失败");
        }
    }

【Java EE 初阶】文件操作

3返回file对象代表的目录下的所有文件,以file对象表示

    public static void main(String[] args) {
        File file = new File("D:\\temp\\test");

        //获取目录下的文件和子目录
        String[] list = file.list();
        System.out.println(Arrays.toString(list));

        //获取目录下的文件对象数组
        File[] files = file.listFiles();
        System.out.println(Arrays.toString(files));
    }

 【Java EE 初阶】文件操作

4.创建单个目录

    public static void main(String[] args) {
        File file = new File("D:\\temp\\test01");

        //创建单个目录
        boolean res = file.mkdir();
        if (res) {
            System.out.println("创建成功!");
        } else {
            System.out.println("创建失败");
        }
    }

【Java EE 初阶】文件操作

 5.创建一连串目录

    public static void main(String[] args) {
        File file = new File("D:/temp/test01/a/b/c");

        //创建单个目录
        boolean res = file.mkdirs();
        if (res) {
            System.out.println("创建成功!");
        } else {
            System.out.println("创建失败");
        }
    }

【Java EE 初阶】文件操作

 6.修改文件名称

    public static void main(String[] args) {
        File file = new File("D:/temp/test/hello.txt");
        File file1 = new File("D:/temp/test/hi.txt");
        //创建单个目录
        boolean res = file.renameTo(file1);
        if (res) {
            System.out.println("修改成功!");
        } else {
            System.out.println("修改失败");
        }
    }

【Java EE 初阶】文件操作

 7.查看文件读写状态

    public static void main(String[] args) {
        File file = new File("D:/temp/test/hello.txt");

        System.out.println(file.canRead());
        System.out.println(file.canWrite());
    }

【Java EE 初阶】文件操作

3. 文件内容的读写---数据流

【Java EE 初阶】文件操作

 【Java EE 初阶】文件操作

1.InputStream概述

InputStream只是一个抽象类,要使用还需要具体的实现类。从文件中读取,使用FileInputStream

 方法:

【Java EE 初阶】文件操作

【Java EE 初阶】文件操作

1.读取文件中的数据

    public static void main(String[] args) throws IOException {
        File file = new File("D:/temp/test/hello.txt");
        InputStream inputStream = new FileInputStream(file);
        while (true) {
            int resd = inputStream.read();
            if (resd == -1) {
                break;
            }
            System.out.println(resd);
        }
    }

 【Java EE 初阶】文件操作

 2.用数组保存读取出来的数据

    public static void main(String[] args) throws IOException {
        File file = new File("D:/temp/test/hello.txt");
        InputStream inputStream = new FileInputStream(file);
        byte[] bytes = new byte[1024];
        while (true) {
            int resd = inputStream.read(bytes);
            if (resd == -1) {
                break;
            }
            for (int i = 0; i < resd; i++) {
                System.out.println(bytes[i]);
            }
        }
    }

 【Java EE 初阶】文件操作

2. FileInputStream

构造方法:

【Java EE 初阶】文件操作

 1.输入数据到文件

调用write方法就表示通过输出流,把内容写到指定的文件中

文件内容一般先写到缓冲区,缓冲区什么时候将内容写入文件,取决于操作系统

强制写入文件,调用 flash()方法,确保文件内容被立即写入

    public static void main(String[] args) throws IOException {
        File file = new File("D:/temp/test/hello.txt");
        //创建一个输出流
        FileOutputStream outputStream = new FileOutputStream(file);
        outputStream.write('a');
        outputStream.write('b');
        outputStream.write('c');
        //刷新缓存区
        outputStream.flush();
        //关闭输出流
        outputStream.close();

    }

【Java EE 初阶】文件操作

【Java EE 初阶】文件操作

用输出流的方式去写文件,会把之前的文件内容清空

2.读取字符

    public static void main(String[] args) throws IOException {
        File file = new File("D:/temp/test/hello.txt");
        //根据file对象创建一个Reader面向字符的输入流
        FileReader fileReader = new FileReader(file);
        while (true) {
            int res = fileReader.read();
            if (res == -1) {
                break;
            }
            //打印
            System.out.println(res);
        }
        //关闭输出流
        fileReader.close();

    }

3.字符流的输出流

    public static void main(String[] args) throws IOException {
        File file = new File("D:/temp/test/hello.txt");
        //根据file对象创建一个Reader面向字符的输入流
        FileWriter fileWriter = new FileWriter(file);
        fileWriter.write("你好");
        fileWriter.write("小锦鲤");
        //刷新
        fileWriter.flush();
        //关闭输出流
        fileWriter.close();

    }

 换行需要自己写转义字符\n进行换行

用输出流的方式去写文件,会把之前的文件内容清空

【Java EE 初阶】文件操作

【Java EE 初阶】文件操作

4.Scanner类

    public static void main(String[] args) throws IOException {
        //根据file对象创建一个Reader面向字符的输入流
        FileInputStream inputStream = new FileInputStream("D:/temp/test/hello.txt");
        Scanner sc = new Scanner(inputStream,"UTF-8");
        while (sc.hasNext()) {
            String  s = sc.nextLine();
            System.out.println(s);
        }

    }

5.printWrite类

    public static void main(String[] args) throws IOException {
        //根据file对象创建一个Reader面向字符的输入流
        FileOutputStream outputStream = new FileOutputStream("D:/temp/test/hello.txt");
        PrintWriter printWriter = new PrintWriter(outputStream);
        printWriter.println("小锦鲤");
        printWriter.println("hello");
        printWriter.flush();
        printWriter.close();
    }

【Java EE 初阶】文件操作

 4.练习扫描文件并删除

1.步骤

【Java EE 初阶】文件操作

2.代码:

import java.io.File;
import java.io.IOException;
import java.util.Scanner;

public class deleteFile {
    public static void main(String[] args) throws IOException {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入要删除的文件的绝对路径");
        String path = sc.next();
        File file = new File(path);
        //检查是否有效
        //1.检查路径是否存在
        if (!file.exists()) {
            System.out.println("路径不存在哦~");
            return;
        }
        //2.检查是否为有效目录
        if (!file.isDirectory()) {
            System.out.println("不是有效目录哦~");
            return;
        }
        //让用户输入目标字符
        System.out.println("请输入要删除的文件名称");
        String name = sc.next();
        //判断名称是否合法
        //使用 "".equals(name) 避免出现异常
        if (name == null || "".equals(name)) {
            System.out.println("名称不可以为空哦~");
            return;
        }
        //递归进行删除
        delete(file, name);
    }

    public static void delete(File file, String name) throws IOException {
        //获取file下所有文件
        File[] files = file.listFiles();
        //递归终止条件
        if (files == null || files.length == 0) {
            return;
        }
        //遍历数组中的每个文件
        for (int i = 0; i < files.length; i++) {
            //判断是否为文件
            if (files[i].isFile()) {
                //是文件,判断是否为目标文件
                String fileName = files[i].getName();
                if (fileName.contains(name)) {
                    System.out.println("找到文件"+files[i].getCanonicalFile()+"是否确定删除?(Y/N)");
                    //接受用户的选择
                    Scanner sc = new Scanner(System.in);
                    String order = sc.next();
                    //删除(忽视大小写)
                    if ("Y".equalsIgnoreCase(order)) {
                        files[i].delete();
                        System.out.println(files[i].getCanonicalFile()+"删除成功~");
                    }
                }
            } else {
                //是目录则继续递归
                delete(files[i], name);
            }
        }


    }
}

3.结果

 

 4.进行普通文件的复制

1.步骤

【Java EE 初阶】文件操作

2.代码:

import java.io.*;
import java.util.Scanner;

public class copyFile {
    public static void main(String[] args) throws FileNotFoundException {
        System.out.println("请输入要复制的文件的路径");
        Scanner sc = new Scanner(System.in);
        String sourceName = sc.next();
        //创建文件类实例
        File sourcefile = new File(sourceName);
        //判断文件是否存在
        if (!sourcefile.exists()) {
            System.out.println("文件不存在~");
            return;
        }
        //判断是否是文件
        if (!sourcefile.isFile()) {
            System.out.println("源文件不是一个有效的文件");
            return;
        }
        //接受用户输入的目标文件
        System.out.println("请输入目标文件路径(绝对路径)");
        String destName = sc.next();
        File destFile = new File(destName);
        //判断目标文件路径是否存在
        if (destFile.exists()) {
            System.out.println("目标文件已存在~");
        }
        //判断目标文件的夫目录是否存在
        if (!destFile.getParentFile().exists()) {
            System.out.println("目标文件路径父目录不存在");
        }
        //循环读取源文件到目标路径
        try {
            FileInputStream inputStream = new FileInputStream(sourcefile);
            FileOutputStream outputStream = new FileOutputStream(destFile);
            //定义byte【】的数组用来做输出型参数
            byte[] bytes = new byte[1024];
            while (true) {
                int len = inputStream.read(bytes);
                if (len == -1) {
                    break;
                }
                //写入目标文件
                outputStream.write(bytes);
                //刷新缓存
                outputStream.flush();
            }
            System.out.println("复制成功");
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

3.结果: 

 

【Java EE 初阶】文件操作文章来源地址https://www.toymoban.com/news/detail-457446.html

到了这里,关于【Java EE 初阶】文件操作的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • Linux :: 【基础指令篇 :: 文件及目录操作:(4)】:: mkdir :: 创建目录:指定路径单个目录创建及一次性创建多级目录

    前言:本篇是 Linux 基本操作篇章的内容! 笔者使用的环境是基于腾讯云服务器:CentOS 7.6 64bit。 学习集: C++ 入门到入土!!!学习合集 Linux 从命令到网络再到内核!学习合集 目录索引: 1. 基本语法及功能 2. 基本使用示例 - - 2.1 当前目录下创建指定新目录 - - 2.2 指定目录下

    2024年02月06日
    浏览(12)
  • 【Java EE初阶十三】网络初识

    【Java EE初阶十三】网络初识

            网络发展的几个主要时期:         单机时代-局域网时代-广域网时代-移动互联网时代         随着时代的发展,越来越需要计算机之间互相通信,共享软件和数据,即以多个计算机协同工作来完成 业务,就有了网络互连。         网络互连: 将多台计

    2024年02月20日
    浏览(10)
  • 【Java EE初阶十六】网络原理(一)

    【Java EE初阶十六】网络原理(一)

            在网络原理中主要学习TCP/IP四层模型中的重点网络协议         应用层是和程序员接触最密切的;         应用程序:在应用层这里,很多时候都是程序员自定义应用层协议(步骤:1、根据需求,明确要传输的信息,2、约定好信息按照什么样的格式来组织)的

    2024年02月20日
    浏览(9)
  • 【Java EE初阶十七】网络原理(二)

    【Java EE初阶十七】网络原理(二)

    2.2.2 关于可靠传输 4.滑动窗口         前面的三个机制,都是在保证 tcp 的可靠性;         TCP 的可靠传输,是会影响传输的效率的.(多出了一些等待 ack 的时间,单位时间内能传输的数据就少了);         滑动窗口,就让可靠传输对性能的影响,更少一些.TCP 只要引入了可

    2024年02月20日
    浏览(5)
  • Java实现读取SFTP服务器指定目录文件

    SFTP服务器的简介 SFTP(SSH File Transfer Protocol)是一种在安全通道上传输文件的协议,它是基于SSH(Secure Shell)协议的扩展,用于在客户端和服务器之间进行加密的文件传输。 SFTP 服务器的主要作用是提供一个安全的方式来上传、下载和管理文件。以下是一些 SFTP 服务器的主要

    2024年02月03日
    浏览(10)
  • java将指定目录下的文件复制到目标文件夹

    递归是一种基于函数调用自身的方法。它是一种非常常见的计算机编程技术,可以让程序员通过简单、优雅的方式来解决许多问题。 简单来说,递归是在函数执行过程中调用自身的过程。当函数被调用时,它会先执行函数体内的语句,然后再调用自己,这个过程将会重复执行

    2024年02月04日
    浏览(43)
  • 【Java EE初阶六】多线程案例(单例模式)

    【Java EE初阶六】多线程案例(单例模式)

            单例模式是一种设计模式,设计模式是我们必须要掌握的一个技能;         设计模式是软性的规定,且框架是硬性的规定,这些都是技术大佬已经设计好的;         一般来说设计模式有很多种,且不同的语言会有不同的设计模式,(同时 设计模式也可

    2024年02月03日
    浏览(9)
  • 【Java EE初阶三 】线程的状态与安全(下)

    【Java EE初阶三 】线程的状态与安全(下)

             线程安全 : 某个代码,不管它是单个线程执行,还是多个线程执行,都不会产生bug,这个情况就成为“线程安全”。          线程不安全 : 某个代码,它单个线程执行,不会产生bug,但是多个线程执行,就会产生bug,这个情况就成为 “线程不安全”,或者

    2024年02月03日
    浏览(7)
  • 【Java EE 初阶】TCP协议的安全效率机制

    【Java EE 初阶】TCP协议的安全效率机制

    目录 1.应用层协议 2.传输层协议 3.UDP协议格式 4.TCP协议格式 5.TCP的安全效率机制 1.确认应答机制 2.超时重传机制 但是,主机A未收到B发来的确认应答,也可能是因为ACK丢失了; 3.连接管理机制 ​编辑 面试题:会不会有可能变成三次挥手? 面试题:第二个FIN丢包了如何处理?

    2024年02月09日
    浏览(7)
  • java将指定文件夹按照文件目录压缩为zip压缩包

    将指定的压缩包作为流发送给浏览器 下面粘贴一些没有用的东西 ,是我自已业务的逻辑,,主要逻辑是根据传入文件不同 判断将压缩包发送给浏览器 还是将xls模板发送给浏览器

    2024年02月16日
    浏览(11)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包