当前位置: 首页 > news >正文

【JavaEE -- 文件操作IO有关面试题】

文件操作IO有关面试题

  • 1.查找硬盘上的文件位置
    • 1.1 思路
    • 1.2 执行代码
  • 2. 实现文件复制
    • 2.1 思路
    • 2.2 代码执行
  • 3. 打印搜索的词的文件路径
    • 3.1 思路
    • 3.2 代码执行

1.查找硬盘上的文件位置

给定一个文件名,去指定的目录中进行搜索,找到文件名匹配的结果,并打印出完整的路径。

1.1 思路

文件系统的目录结构是 树形 结构,针对树的遍历,要递归进行实现,而这里目录中有几个子目录,就递归几次。此处是N叉树,并且每个节点上也有很多文件。

  1. 输入必要的信息,引用Scanner进行接收文件名和目录。
  2. 进行路径合法性判断
  3. 有了要搜索的路径之后,就可以按照递归的方式来搜索。
  4. 在递归中,1)要使用 listFiles() 把当前目录的文件和子文件都列出来
    2)遍历所有文件,判定每个file是目录还是文件
    3)普通文件,判定是否是要搜索的文件,不是就接着递归

1.2 执行代码

import java.io.File;
import java.io.InputStream;
import java.util.Scanner;public class IODemo13 {public static void main(String[] args) {//1. 输入必要的信息Scanner scanner = new Scanner(System.in);System.out.println("请输入要搜索的文件名:");String fileName = scanner.next();System.out.println("请输入要搜索的目录:");String rootPath = scanner.next();File rootFile = new File(rootPath);if (!rootFile.isDirectory()) {System.out.println("输入的路径有误");return;}// 2. 有了要搜索的路径之后,就可以按照,递归的方式来搜索scanDir(rootFile,fileName);}private static void scanDir(File rootFile, String fileName) {// 把当前目录的文件和子文件都列出来File[] files = rootFile.listFiles();if (files == null) {// 空的目录,直接返回return;}// 2.遍历上述files,判定每一个file是目录还是for (File f : files) {System.out.println("当前遍历到:" + f.getAbsolutePath());if (f.isFile()) {// 普通文件,评定文件名是否是搜索的文件if (fileName.equals(f.getName())) {System.out.println("找到符合要求的文件!" + f.getAbsolutePath());}} else if (f.isDirectory()) {// 是目录,接着递归scanDir(f,fileName);} else {;}}}
}

2. 实现文件复制

把一个文件复制一下,成为另外一个文件。

2.1 思路

把第一个文件读方式打开,依次读取这里的每个字节,再把读到的内容写入到另外一个文件。

  1. 输入必要信息(源文件路径和目标文件路径)
  2. 合法性判断(源文件路径的文件是否存在,目标文件目录是否正确)
  3. 复制操作(读文件然后进行写文件到另外一个文件)

2.2 代码执行

public class IODemo14 {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.println("请输入你要复制的源文件:");String srcPath = scanner.next();System.out.println("请输入你要复制过去的目标文件:");String destPath = scanner.next();// 合法性判断// 1. srcPath 对应的文件是否存在File srcFile = new File(srcPath);if (!srcFile.isFile()) {System.out.println("输入的源文件有误");return;}// 2.destPath 不要求对应的文件存在,但是目录得存在File destFile = new File(destPath);if (!destFile.getParentFile().isDirectory()) {System.out.println("目标文件目录有误");return;}// 复制操作// try()里面可以写多个对象定义,用 ; 隔开就好try (InputStream inputStream = new FileInputStream(srcFile);OutputStream outputStream  = new FileOutputStream(destFile)) {while (true) {byte[] buffer = new byte[1024];int n = inputStream.read(buffer);if (n == -1) {break;}//outputStream.write(buffer,0,n);}} catch (IOException e) {throw new RuntimeException(e);}}
}

3. 打印搜索的词的文件路径

用户输入一个目录,一个搜索的词,在目录中搜索,按照文件内容的方式搜索,遍历文件的过程中,如果文件包含了要搜索的词,此时就把文件的路径打印出来。

3.1 思路

  1. 输入搜索的路径和词并判断路径是否合法
  2. 路径合法进行递归寻找匹配的词
  3. 遍历文件,如果文件存在,进行搜索,如果是目录,接着递归。
  4. 搜索思路:1)把文件的内容全部读取出来,用StringBuilder中的append方法进行拼接
    2)当文件读取完毕,循环结束之后,此时StringBuilder就是包含整个内容的字符串了
    3)使用StringBuilder中的indexOf(word)如果为-1,那就是遍历完了没找到,找到了获取路径

3.2 代码执行

import java.io.*;
import java.util.Scanner;/**在目录中搜索,按照文件内容的方式搜索用户输入一个目录,一个要搜索的词遍历文件的过程,如果文件包含了要搜索的词(这个匹配过程,就需要把文件内容读取出来,再在文件内容中进行查找),此时就把文件的路径打印出来
*/public class IODemo15 {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.println("请输入要搜索的路径:");String rootPath = scanner.next();System.out.println("请输入要搜索的词");String word = scanner.next();File rootFile = new File(rootPath);if (!rootFile.isDirectory()) {System.out.println("输入的搜索路径不正确");return;}scanDir2(rootFile,word);}private static void scanDir2(File rootFile, String word) {File[] files = rootFile.listFiles();if (files == null) {return;}for (File f : files) {System.out.println(" 当前遍历到:" + f.getAbsolutePath());if (f.isFile()) {//在文件内容中搜索searchInFile(f,word);}else if (f.isDirectory()) {scanDir2(f,word);}else {;}}}private static void searchInFile(File f, String word) {// 通过这个方法在文件内部进行搜索// 1. 把文件里的内容全部读取出来try (InputStream inputStream = new FileInputStream(f)) {StringBuilder stringBuilder= new StringBuilder();while (true) {byte[] buffer = new byte[1024];int n = inputStream.read(buffer);if (n == -1) {break;}// 此处只是读取文件的一部分,需要把文件内容整体拼接在一起String s = new String(buffer,0,n);stringBuilder.append(s);}// 测试,查看stringBuilder内容System.out.println("[debug] 文件内容:" + stringBuilder);// 当文件读取完毕,循环结束之后,此时stringBulider就是包含整个内容的字符串了if (stringBuilder.indexOf(word) == -1) {// 没找到return;}// 找到了,打印文件的路径System.out.println("word存在的文件路径:" + f.getAbsolutePath());} catch (IOException e) {throw new RuntimeException(e);}}
}

相关文章:

【JavaEE -- 文件操作IO有关面试题】

文件操作IO有关面试题 1.查找硬盘上的文件位置1.1 思路1.2 执行代码 2. 实现文件复制2.1 思路2.2 代码执行 3. 打印搜索的词的文件路径3.1 思路3.2 代码执行 1.查找硬盘上的文件位置 给定一个文件名,去指定的目录中进行搜索,找到文件名匹配的结果&#…...

Open WebUI大模型对话平台-适配Ollama

什么是Open WebUI Open WebUI是一种可扩展、功能丰富、用户友好的大模型对话平台,旨在完全离线运行。它支持各种LLM运行程序,包括与Ollama和Openai兼容的API。 功能 直观的界面:我们的聊天界面灵感来自ChatGPT,确保了用户友好的体验。响应…...

[2021]Zookeeper getAcl命令未授权访问漏洞概述与解决

今天在漏洞扫描的时候蹦出来一个zookeeper的漏洞问题,即使是非zookeeper的节点,或者是非集群内部节点,也可以通过nc扫描2181端口,获取极多的zk信息。关于漏洞的详细描述参考apache zookeeper官方概述:CVE-2018-8012: A…...

vscode添加gitee

1.创建仓库 2.Git 全局设置 3.初始化仓库 2.1 打开vscode打开需要上传到给git的代码文件 2.2.点击左边菜单第三个的源代码管理->初始化仓库 4.点击加号暂存所有更改 5.添加远程仓库 5.1 添加地址,回车 5.2 填写库名,回车 6.提交和推送 6.1 点击✔提交…...

数据库底层原理

本文将介绍数据库在储存和通讯时的原理 数据库储存 首先,数据库的作用持久化存储数据,数据库的存储形式就是文件,每一张表就是一个文件,其他数据也是文件形式,比如索引文件。 比如像mysql数据库,其中的数…...

JVM虚拟机-实战篇

专属小彩蛋:前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站(前言 - 床长人工智能教程) 目录 一、内存溢出和内存泄漏 什么是内存泄漏? 二、解决内存泄漏 解决内存泄漏的思路 top命令 发现问题 VisualVM 发现问…...

上岸跨考生的备考经验,送给零基础跨考计算机的你!

九个月的时间绝对是够用的,就算是跨考也够用! 一般来说,专业课要复习三轮,九个月的时间,复习三轮完全够用 复习资料:王道四本书王道真题 打基础阶段:3-6月: 学习目标&#xff1a…...

js改变图片曝光度(高亮度)

方法一: 原理: 使用canvas进行滤镜操作,通过改变图片数据每个像素点的RGB值来提高图片亮度。 缺点 当前项目使用的是svg,而不是canvas 调整出来的效果不是很好,图片不是高亮,而是有些发白 效果 代码 …...

【NLP笔记】大模型prompt推理(提问)技巧

文章目录 prompt概述推理(提问)技巧基础prompt构造技巧进阶优化技巧prompt自动优化 参考链接: Pre-train, Prompt, and Predict: A Systematic Survey of Prompting Methods in Natural Language Processing预训练、提示和预测:NL…...

【目标检测】西红柿成熟度数据集三类标签原始数据集280张

文末有分享链接 标签名称names: - unripe - semi-ripe - fully-ripe D00399-西红柿成熟度数据集三类标签原始数据集280张...

Java File类(文件操作类)

背景: 在Java编程语言中,操作文件和目录是一项常见的任务。而File类,则是java.io包中的重要类,它是唯一代表磁盘文件本身的对象。通过File类提供的方法,我们可以轻松地创建、删除、重命名文件和目录等操作。 构造方法&…...

正则表达式 vs. 字符串处理:解析优势与劣势

title: 正则表达式 vs. 字符串处理:解析优势与劣势 date: 2024/3/27 15:58:40 updated: 2024/3/27 15:58:40 tags: 正则起源正则原理模式匹配优劣分析文本处理性能比较编程应用 1. 正则表达式起源与演变 正则表达式(Regular Expression)最早…...

1、goreplay流量回放

目的 在实际项目中,会有大量的回归测试工作,通常会使用自动化代码的手段来实现回归,但是对于一个庞大的系统来说,通过自动化脚本的方式来实现回归测试,又显得很费时费力。并且如果有定期将线上数据同步到测试环境的需求…...

Transformer的前世今生 day06(Self-Attention和RNN、LSTM的区别)

Self-Attention和RNN、LSTM的区别 RNN的缺点:无法做长序列,当输入很长时,最后面的输出很难参考前面的输入,即长序列会缺失上文信息,如下: 可能一段话超过50个字,输出效果就会很差了 LSTM通过忘…...

UDP send 出现大量“Resource temporarily unavailable”

背景 最近排查用户现场环境,查看日志出现大量的“send: Resource temporarily unavailable”错误,UDP设置NO_BLOCK模式,send又发生在进程上下文,并且还设置了SO_SNDBUF 为8M,在此情况下为什么还会出现发送队列满的情况…...

怎么拆解台式电脑风扇CPU风扇的拆卸步骤-怎么挑

今天我就跟大家分享一下如何选购电脑风扇的知识。 我也会解释一下机箱散热风扇一般用多少转。 如果它恰好解决了您现在面临的问题,请不要忘记关注本站并立即开始! 文章目录列表:大家一般机箱散热风扇都用多少转? 机箱散热风扇选择…...

Windows安装Odoo结合内网穿透实现公网访问本地企业管理系统

文章目录 前言1. 下载安装Odoo:2. 实现公网访问Odoo本地系统:3. 固定域名访问Odoo本地系统 前言 Odoo是全球流行的开源企业管理套件,是一个一站式全功能ERP及电商平台。 开源性质:Odoo是一个开源的ERP软件,这意味着企…...

Portainer的替代Dockge?又一个Docker Compose管理器?

Dockge:让Docker Compose管理触手可及,一图胜千言,轻松构建与管控您的容器服务栈!- 精选真开源,释放新价值。 概览 Docker,这一开放源代码的创新平台,旨在实现应用程序部署、扩展与运维的自动化…...

Midjourney AI绘图工具介绍及使用

介绍 Midjourney是一款目前被誉为最强的AI绘图工具。只要输入想到的文字,就能通过人工智能产出相对应的图片。 官网只是宣传和登录入口,提供个人主页、订阅管理等功能,Midjourney实际的绘画功能,是在另外一个叫discord的产品中实…...

clang-query 的编译安装与使用示例

1,clang query 概述 作用: 检查一个程序源码的抽象语法树,测试 AST 匹配器; 帮助检查哪些 AST 节点与指定的 AST 匹配器相匹配; 2,clang-query 安装 准备: git clone --recursive https://git…...

java_网络服务相关_gateway_nacos_feign区别联系

1. spring-cloud-starter-gateway 作用:作为微服务架构的网关,统一入口,处理所有外部请求。 核心能力: 路由转发(基于路径、服务名等)过滤器(鉴权、限流、日志、Header 处理)支持负…...

<6>-MySQL表的增删查改

目录 一,create(创建表) 二,retrieve(查询表) 1,select列 2,where条件 三,update(更新表) 四,delete(删除表&#xf…...

电脑插入多块移动硬盘后经常出现卡顿和蓝屏

当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时,可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案: 1. 检查电源供电问题 问题原因:多块移动硬盘同时运行可能导致USB接口供电不足&#x…...

python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)

更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...

CocosCreator 之 JavaScript/TypeScript和Java的相互交互

引擎版本: 3.8.1 语言: JavaScript/TypeScript、C、Java 环境:Window 参考:Java原生反射机制 您好,我是鹤九日! 回顾 在上篇文章中:CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...

C++.OpenGL (10/64)基础光照(Basic Lighting)

基础光照(Basic Lighting) 冯氏光照模型(Phong Lighting Model) #mermaid-svg-GLdskXwWINxNGHso {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-GLdskXwWINxNGHso .error-icon{fill:#552222;}#mermaid-svg-GLd…...

华为云Flexus+DeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建

华为云FlexusDeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建 前言 如今大模型其性能出色,华为云 ModelArts Studio_MaaS大模型即服务平台华为云内置了大模型,能助力我们轻松驾驭 DeepSeek-V3/R1,本文中将分享如何…...

全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比

目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...

企业如何增强终端安全?

在数字化转型加速的今天,企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机,到工厂里的物联网设备、智能传感器,这些终端构成了企业与外部世界连接的 “神经末梢”。然而,随着远程办公的常态化和设备接入的爆炸式…...

全面解析数据库:从基础概念到前沿应用​

在数字化时代,数据已成为企业和社会发展的核心资产,而数据库作为存储、管理和处理数据的关键工具,在各个领域发挥着举足轻重的作用。从电商平台的商品信息管理,到社交网络的用户数据存储,再到金融行业的交易记录处理&a…...