【JavaEE -- 文件操作IO有关面试题】
文件操作IO有关面试题
- 1.查找硬盘上的文件位置
- 1.1 思路
- 1.2 执行代码
- 2. 实现文件复制
- 2.1 思路
- 2.2 代码执行
- 3. 打印搜索的词的文件路径
- 3.1 思路
- 3.2 代码执行
1.查找硬盘上的文件位置
给定一个文件名,去指定的目录中进行搜索,找到文件名匹配的结果,并打印出完整的路径。
1.1 思路
文件系统的目录结构是 树形 结构,针对树的遍历,要递归进行实现,而这里目录中有几个子目录,就递归几次。此处是N叉树,并且每个节点上也有很多文件。
- 输入必要的信息,引用Scanner进行接收文件名和目录。
- 进行路径合法性判断
- 有了要搜索的路径之后,就可以按照递归的方式来搜索。
- 在递归中,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 思路
把第一个文件读方式打开,依次读取这里的每个字节,再把读到的内容写入到另外一个文件。
- 输入必要信息(源文件路径和目标文件路径)
- 合法性判断(源文件路径的文件是否存在,目标文件目录是否正确)
- 复制操作(读文件然后进行写文件到另外一个文件)
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)把文件的内容全部读取出来,用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月: 学习目标:…...
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…...
拯救你的Flash回忆:CefFlashBrowser让经典内容重获新生
拯救你的Flash回忆:CefFlashBrowser让经典内容重获新生 【免费下载链接】CefFlashBrowser Flash浏览器 / Flash Browser 项目地址: https://gitcode.com/gh_mirrors/ce/CefFlashBrowser 你是否曾经因为现代浏览器不再支持Flash而无法重温那些经典的教学课件&…...
STM32F767串口接收不定长数据实战:超时中断与空闲中断的配置与性能对比
1. STM32F767串口接收不定长数据的痛点与解决方案 在嵌入式开发中,处理串口不定长数据就像在餐厅等一份不知道有多少道菜的套餐——你永远不知道下一口是什么,也不知道什么时候结束。STM32F767作为高性能MCU,面对RS485、Modbus等协议时&#…...
LeetCode 热题 100 之 131. 分割回文串 51. N 皇后
131. 分割回文串 51. N 皇后 131. 分割回文串 class Solution {public List<List<String>> partition(String s) {List<List<String>> res new ArrayList<>();List<String> path new ArrayList<>();backtrack(s, 0, path, res);re…...
Kandinsky-5.0-I2V-Lite-5s技术解析:如何在24GB显存跑通完整图生视频栈
Kandinsky-5.0-I2V-Lite-5s技术解析:如何在24GB显存跑通完整图生视频栈 1. 开箱即用的轻量级图生视频方案 Kandinsky-5.0-I2V-Lite-5s是一款让静态图片动起来的AI工具。想象一下,你只需要上传一张照片,再简单描述想要的动态效果,…...
Nunchaku FLUX.1 CustomV3镜像免配置:预装ComfyUI+Custom Workflow+LoRA权重一体化方案
Nunchaku FLUX.1 CustomV3镜像免配置:预装ComfyUICustom WorkflowLoRA权重一体化方案 想体验最新的AI绘画模型,但被复杂的安装、配置和模型下载劝退?今天给大家介绍一个“开箱即用”的终极方案——Nunchaku FLUX.1 CustomV3镜像。它把文生图…...
陶哲轩:AI让数学进入「工业化」时代,数学家也可以是「包工头」
来源:机器之心编辑:张倩、陈陈很多人提到数学研究,脑子里浮现的还是那个画面:一个人,一块白板,来回踱步,等灵感突然降临。但当今世界最伟大的数学家之一、菲尔兹奖得主陶哲轩却告诉我们…...
Sentaurus实战解析:SiC NMOS仿真中的关键参数设置与优化
1. SiC NMOS仿真基础与Sentaurus环境搭建 碳化硅(SiC)功率器件因其优异的耐高温、高压特性,正在电力电子领域掀起一场革命。作为第三代半导体材料的代表,SiC的临界击穿电场强度达到硅的10倍,热导率更是硅的3倍。但在实际器件开发中࿰…...
Swagger2Word终极指南:从Swagger文档到专业Word接口文档的高效转换方案
Swagger2Word终极指南:从Swagger文档到专业Word接口文档的高效转换方案 【免费下载链接】swagger2word 项目地址: https://gitcode.com/gh_mirrors/swa/swagger2word Swagger2Word是一款专为开发团队设计的开源工具,能够将Swagger/OpenAPI接口文…...
从‘它又挂了’到‘稳如老狗’:我是如何用Prometheus+Grafana给自家小破站做监控的
从“它又挂了”到“稳如老狗”:我是如何用PrometheusGrafana给自家小破站做监控的 凌晨三点,手机突然响起钉钉告警——这已经是本周第三次被“502 Bad Gateway”的提示音吵醒。揉着惺忪睡眼重启Nginx时,我突然意识到:这个用业余时…...
5G技术解析:深入理解5GNR帧结构与空口资源分配
1. 5GNR帧结构的设计原理 第一次接触5GNR帧结构时,我被那些密密麻麻的时隙和符号搞得头晕眼花。但真正理解后才发现,这套设计就像乐高积木一样精巧。5GNR帧结构延续了4G LTE的10ms帧和1ms子帧设计,但玩出了更多花样。 最关键的改变在于时隙灵…...
