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

文件相对路径与绝对路径

前言:

在写代码绘制图像的过程中,发现出现can't read input file的异常,而且输出框没有绘制图片,所以寻找解决方案。先贴上之前写的简洁版绘制图像代码

1.BackGround类

import java.awt.image.BufferedImage;public class BackGround {private BufferedImage bgImage=null;private int sort;private boolean flag;public BackGround(){}public BackGround(int sort,boolean flag) {this.sort = sort;this.flag = flag;bgImage = StaticValue.bg;}public BufferedImage getBgImage() {return bgImage;}public int getSort() {return sort;}public boolean isFlag() {return flag;}}

2.MyFrame类


import javax.swing.*;
import java.awt.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.io.IOException;public class MyFrame extends JFrame implements KeyListener {private BackGround nowBg = new BackGround();private Image offScreenImage = null;public MyFrame() throws IOException {//设置窗口的大小为800 * 600this.setSize(800,600);//设置窗口居中显示this.setLocationRelativeTo(null);//设置窗口的可见性this.setVisible(true);//设置点击窗口上的关闭键,结束程序this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置窗口大小不可变this.setResizable(false);//向窗口对象添加键盘监听器this.addKeyListener(this);//设置窗口名称this.setTitle("超级玛丽");
/*String userDir = System.getProperty("user.dir");System.out.println("当前工作目录: " + userDir);*/StaticValue.init();nowBg=new BackGround(1,true);repaint();}public void paint(Graphics g){if (offScreenImage == null) {offScreenImage = createImage(800,600);}Graphics graphics = offScreenImage.getGraphics();graphics.fillRect(0,0,800,600);//绘制背景graphics.drawImage(nowBg.getBgImage(),0,0,this);//将图像绘制到窗口中g.drawImage(offScreenImage,0,0,this);}public static void main(String[] args) throws IOException {MyFrame myFrame = new MyFrame();}@Overridepublic void keyTyped(KeyEvent e) {}@Overridepublic void keyPressed(KeyEvent e) {}@Overridepublic void keyReleased(KeyEvent e) {}}

3.StaticValue类

import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;public class StaticValue {public static BufferedImage bg=null;public static String path=System.getProperty("user.dir")+"/src/bg.png";//public static String path=System.getProperty("user.dir")+"/src/";//public static String path="D:/BaiduNetdiskDownload/test/src/";//这里一定要用绝对路径   "/test/src/bg.png";public static void init()  {try {bg= ImageIO.read(new File(path+"bg.png"));} catch (IOException e) {e.printStackTrace();}}}

4.文件组织情况如下图,其中图片png文件直接拖到src包那里就可以自动创建了。

如果先按照源代码错误的路径寻找,会出现无法读取图片资源的错误

解决:

经过查阅资料,我了解到:

1.System.getProperty("user.dir") 是 Java 中用于获取当前用户工作目录的一个方法。这个方法返回一个字符串,表示当前 Java 程序运行时的工作目录路径。我的代码出现问题的逻辑是没有处理好文件的绝对路径,代码这里System.getProperty("user.dir")+"/src/bg.png"的形式(注意只是形式,但是实际上这个代码的路径不正确)是采用工作路径加上绝对路径来读取读取到的应该是路径而不应该是具体的文件名??

但是!改成这样就正确了:

public static String path="./src/";//相对路径,对public static String path=System.getProperty("user.dir")+"/src/";//绝对路径,对

疑惑:

1.但是这些代码是错误的路径:为什么!!!!!

 public static String path="/bg.png/";public static String path=System.getProperty("user.dir")+"/src/bg.png";public static String path="D:/BaiduNetdiskDownload/test/src/bg.png";

附上检查文件工作目录的方法:

 String userDir = System.getProperty("user.dir");System.out.println("当前工作目录: " + userDir);

2.输出是乱码形式怎么解决

已经改成utf8还是乱码

解决:

1.关于字符编码乱码,可能是因为jdk版本过高,使用的是gbk编码,只需手动把utf8改成gbk就可以了。更多修改方式如下面的连接(转载)

https://blog.csdn.net/JasonXu94/article/details/132871422

2.错误路径:

其实,IDEA中可以直接打开所在的文件路径

错因解析:注意,在ImageIO.read中,已经使用了path+bg.png,所以文件路径不需要再写bg.png这个文件名了,写了会造成重复,才会失败

或者改成这样:

心得:

从一个偶然的错误:忽略了ImageIO.read已经加上了文件名(为了省略加载多张图片要重复写路径中相同的部分,把path集成为文件名中相同的部分,这样加载不同图片只需加上不同的文件名即可),在解决问题的过程中我学习了文件的相对路径和绝对路径,顺便了解了编码乱码怎么解决,收获颇丰。

相关文章:

文件相对路径与绝对路径

前言: 在写代码绘制图像的过程中,发现出现cant read input file的异常,而且输出框没有绘制图片,所以寻找解决方案。先贴上之前写的简洁版绘制图像代码 1.BackGround类 import java.awt.image.BufferedImage;public class BackG…...

Linux 重启命令全解析:深入理解与应用指南

Linux 重启命令全解析:深入理解与应用指南 在 Linux 系统中,掌握正确的重启命令是确保系统稳定运行和进行必要维护的关键技能。本文将深入解析 Linux 中常见的重启命令,包括功能、用法、适用场景及注意事项。 一、reboot 命令 功能简介 re…...

【北京迅为】《STM32MP157开发板嵌入式开发指南》-第六十七章 Trusted Firmware-A 移植

iTOP-STM32MP157开发板采用ST推出的双核cortex-A7单核cortex-M4异构处理器,既可用Linux、又可以用于STM32单片机开发。开发板采用核心板底板结构,主频650M、1G内存、8G存储,核心板采用工业级板对板连接器,高可靠,牢固耐…...

`a = a + b` 与 `a += b` 的区别

在 Java 中,a a b 和 a b 都用于将 b 的值加到 a 上,但它们之间存在一些重要的区别,尤其是在类型转换和操作行为方面。 使用 操作符时,Java 会自动进行隐式类型转换,而使用 则不会。这意味着在 a b 的情况下&am…...

mysqld.log文件过大,清理后不改变所属用户

#1024程序员节# 一、背景 突然有一天,我的mysql报磁盘不足了。仔细查看才发现,是磁盘满了。而MySQL的日志文件占用了91个G.如下所示: [roothost-172-16-14-128 mysql]# ls -lrth 总用量 93G -rw-r----- 1 mysql mysql 1.1G 7月 30 2023 m…...

v4.7+版本用户充值在交易统计中计算双倍的问题修复

app/services/statistic/TradeStatisticServices.php 文件中 $whereInRecharge[recharge_type] no_system; $whereInRecharge[recharge_type] system; app/model/user/UserRecharge.php 中 修改此搜索器内容 public function searchRechargeTypeAttr($query, $value){ if…...

[GXYCTF 2019]Ping Ping Ping 题解(多种解题方式)

知识点: 命令执行 linux空格绕过 反引号绕过 变量绕过 base64编码绕过 打开页面提示 "听说php可以执行系统函数?我来康康" 然后输入框内提示输入 bjut.edu.cn 输入之后回显信息,是ping 这个网址的信息 输入127.0.0.1 因为提示是命令…...

MODSI EVI 数据的时间序列拟合一阶谐波模型

目录 简介 函数 ee.Reducer.linearRegression(numX, numY) Arguments: Returns: Reducer ee.Image.cat(var_args) Arguments: Returns: Image hsvToRgb() Arguments: Returns: Image 代码 结果 简介 MODIS/006/MOD13A1数据是由美国国家航空航天局(NASA)的MODIS…...

Java:String类(超详解!)

一.常用方法 🥏1.字符串构造 字符串构造有三种方法: 📌注意: 1. String是引用类型,内部并不存储字符串本身 如果String是一个引用那么s1和s3应该指向同一个内容,s1和s2是相等的,应该输出两…...

【日志】力扣13.罗马数字转整数 || 解决泛型单例热加载失败问题

2024.10.28 【力扣刷题】 13. 罗马数字转整数 - 力扣(LeetCode)https://leetcode.cn/problems/roman-to-integer/description/?envTypestudy-plan-v2&envIdtop-interview-150这题用模拟的思想可以给相应的字母赋值,官方的答案用的是用一…...

Mybatis高级

系列文章目录 高级Mybatis,一些结果映射,引入新的注解 目录 系列文章目录 文章目录 一、结果映射 1.ResultType 2.ResultMap 基础应用: 二、一对一 嵌套结果和嵌套查询 嵌套结果 嵌套查询 区别 三、一对多 四、多对多 五、注解补充 1.一对一…...

【spark】spark structrued streaming读写kafka 使用kerberos认证

spark版本:2.4.0 官网 Spark --files使用总结 Spark --files理解 一、编写jar import org.apache.kafka.clients.CommonClientConfigs import org.apache.kafka.common.config.SaslConfigs import org.apache.spark.sql.SparkSession import org.apache.spark.sql.streaming.T…...

【脚本】B站视频AB复读

控制台输入如下代码,回车 const video document.getElementsByTagName("video")[0];//获取bpx-player-control-bottom-center容器,更改其布局方式const div document.getElementsByClassName("bpx-player-control-bottom-center")[0];div.sty…...

leetcode - 257. 二叉树的所有路径

257. 二叉树的所有路径 题目 解决 做法一:深度优先搜索 回溯 深度优先搜索(Depth-First Search, DFS)是一种用于遍历或搜索树或图的算法。这种搜索方式会尽可能深地探索每个分支,直到无法继续深入为止,然后回溯到上…...

python 相关

python 1. pip 安装某个版本范围的软件 pip install “elasticsearch>6,<7” pip install elasticsearchX.Y.Z 2. pip 查看包版本 pip show pandas 3. pip 下载whl包 https://tendcode.com/subject/article/pip-offline-download/ (更多平台与架构)pip downl…...

静态分析2:控制流分析(构建CFG)

参考&#xff1a;南京大学《软件分析》课程2 1、控制流分析 控制流分析实际上指的是构建控制流图&#xff08;Control Flow Graph&#xff0c;CFG&#xff09;CFG是静态分析的基础数据结构CFG的节点可以是单个指令、基本块&#xff08;Basic Block&#xff0c;BB&#xff09;…...

Linux 应用领域

目录 服务器领域 桌面环境 软件开发 数据分析与科学计算 嵌入式系统 虚拟化和云计算 人工智能与机器学习 物联网&#xff08;IoT&#xff09; 网络安全 服务器领域 Linux在服务器领域的应用是其最为广泛和成熟的领域之一。由于其开源、稳定、高效和安全的特性&#xf…...

FPM383C指纹模块超详解 附驱动

0. 本人使用环境介绍 0.1 硬件环境 ESP32-C3FPM383C指纹模块一根破旧的usb数据线 0.2 软件环境 Clion2024.2.2ESP-IDF5.3.1Clion插件ESP-IDF 1. 硬件接口说明 1.1 UART UART 缺省波特率为 57.6Kbps&#xff0c;数据格式&#xff1a;8 位数据位&#xff0c;2 位停止位&am…...

若依框架篇-若依集成 X-File-Storage 框架(实现图片上传阿里云 OSS 服务器)、EasyExcel 框架(实现 Excel 数据批量导入功能)

&#x1f525;博客主页&#xff1a; 【小扳_-CSDN博客】 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1.0 实现使用 Excel 文件批量导入 1.1 导入功能的前端具体实现 1.2 导入功能的后端具体实现 1.3 使用 EasyExcel 框架实现 Excel 读、写功能 1.4 将 Easy Excel 集成到…...

.rmallox勒索病毒肆虐:如何有效防范与应对

引言 在当今这个数字化时代&#xff0c;网络安全已成为一个不可忽视的重要议题。随着信息技术的飞速发展&#xff0c;网络空间的安全威胁也日益复杂多变。病毒、木马、勒索软件等恶意程序层出不穷&#xff0c;比如.rmallox勒索病毒。它们利用先进的技术手段&#xff0c;如代码…...

人工智能能否影响未来生活:一场深刻的社会与技术变革

随着人工智能技术的不断发展&#xff0c;我们已经目睹了它在各行各业掀起的巨大变革浪潮。从医疗行业的病例诊断、药物研发&#xff0c;到企业运营的数据分析、智能决策&#xff0c;再到日常生活中的智能语音助手、自动驾驶汽车、智能家居&#xff0c;人工智能正以前所未有的速…...

cmu 15-445学习笔记-3 存储引擎

03 Database Storage-Part Ⅰ 数据库存储上半部分 数据库分层划分结构图&#xff1a; Disk Manager&#xff1a;存储引擎&#xff0c;管理磁盘上的文件Bufferpool Manager&#xff1a;管理内存的缓存池Access Methods&#xff1a;访问方法Operator Execution&#xff1a;执行…...

[linux]和windows间传输命令scp 执行WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!错误解决

[linux]和windows间传输命令scp 执行WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!错误解决. 现象&#xff1a; 原因&#xff1a; 接收方服务器系统做了某些更改&#xff0c;导致登录时会报错。主要因为接收方服务器对登录过它的主机都会把该主机登录标识证书记录下来&a…...

C++ | Leetcode C++题解之第518题零钱兑换II

题目&#xff1a; 题解&#xff1a; class Solution { public:int change(int amount, vector<int>& coins) {vector<int> dp(amount 1), valid(amount 1);dp[0] 1;valid[0] 1;for (int& coin : coins) {for (int i coin; i < amount; i) {valid[…...

高并发-负载均衡

负载均衡在微服务架构中是一个重要的组成部分&#xff0c;旨在优化资源利用、提高服务可用性和确保系统的高可扩展性。以下是对微服务中的负载均衡的详细介绍&#xff0c;包括其原理、类型、实现方式以及相关的技术。 一、负载均衡的原理 负载均衡的基本原理是将进入系统的请…...

Docker 常用命令全解析:提升对雷池社区版的使用经验

Docker 常用命令解析 Docker 是一个开源的容器化平台&#xff0c;允许开发者将应用及其依赖打包到一个可移植的容器中。以下是一些常用的 Docker 命令及其解析&#xff0c;帮助您更好地使用 Docker。 1. Docker 基础命令 查看 Docker 版本 docker --version查看 Docker 运行…...

基于 Postman 和 Elasticsearch 测试乐观锁的操作流程

鱼说&#xff0c;你看不到我眼中的泪&#xff0c;因为我在水中。水说&#xff0c;我能感觉到你的泪&#xff0c;因为你在我心中。 -村上春树 在分布式系统中&#xff0c;多个并发操作对同一资源的修改可能导致数据不一致。为了解决这种问题&#xff0c;Elasticsearch 提供了乐观…...

如何从PPT中导出600dpi的高清图

Step1. 修改PPT注册表 具体过程&#xff0c;参见如下链接&#xff1a;修改ppt注册表&#xff0c;导出高分辨率图片 Step2. 打开PPT&#xff0c;找到自己想要保存的图&#xff0c;选中图像&#xff0c;查看图像尺寸并记录 Step3. 重新新建一个PPT&#xff0c;并根据记录的图片…...

day01-ElasticStack+Kibana

ElasticStack-数据库 #官网https://www.elastic.co/cn/ #下载7.17版环境准备 主机名IP系统版本VMware版本elk110.0.0.91Ubuntu 22.04.417.5.1elk210.0.0.92Ubuntu 22.04.417.5.1elk310.0.0.93Ubuntu 22.04.417.5.1 单机部署ES 1.下载ES软件包&#xff0c;放到/usr/local下 […...

HTML 约束验证

HTML5引入了表单相关的一些新机制&#xff1a;它为<input>元素和约束验证增加了一些新的语义类型&#xff0c;使得客户端检查表单内容变得容易。基本上&#xff0c;通过设置一些新的属性&#xff0c;常用的约束条件可以无需 JavaScript 代码而检测到&#xff1b;对于更复…...

徐州网站建设优化宣传/百度平台客服人工电话

一、什么是生产线3D可视化解决方案&#xff1f; 生产线3D可视化解决方案&#xff0c;是结合物联网监控系统&#xff08;智慧工厂&#xff09;、虚实联动与三维建模先进技术&#xff0c;以三维立体模式呈现出来&#xff0c;使得界面直观、简单&#xff0c;便于监控人员识别异常信…...

橙子建站网/广告优化

“ 关键字&#xff1a;微信 小程序 ”正文&#xff1a;小程序 会议助手01—会议助手小程序&#xff0c;主要功能可以为参会人介绍公司、介绍议程、带领签到&#xff0c;查询座位等&#xff0c;会议助手。同时为举办方和与会人员提供便利&#xff0c;建立纽带。此会议助手主要针…...

建设网站用什么语言/如何获取网站的seo

1.js历史 1995年 网景公司 浏览器 JavaScript{ 语法 解析器 } IE JavaScript{语法解析器 }ECAMScript2. JavaScript ECAMScript 语法 DOM BOM 3. JS特点 1) 解释型语言 非编译型&#xff0c;运行时直接用源文件即可 2) 弱类型语言 变量的类型由其值来决定 3) 面…...

企业营销网站建设公司哪家好/最近发生的新闻大事

remove 可删除目录&#xff0c;文件#man rm 【查看命令详细信息】-f, --force 【强制删除&#xff0c;忽略不存在的文件&#xff0c;不提示】ignore nonexistent files, never prompt-i 【删除文件之前提示】rm默认带-i选项&#xff0c; rmrm -iprompt before every removal -r…...

八桂云网站建设/已矣seo排名点击软件

2019独角兽企业重金招聘Python工程师标准>>> 安装gcc sudo apt-get install gcc 安装gcc-c 的编译环境 sudo apt-get install build-essential 安装pcre cd pcre-version ./configure make sudo make install 安装zlib cd zlib-version ./configure make sudo make…...

网站建设怎么搭建服务器/游戏交易平台

无压力的软件发布之旅 认真看完这段视频&#xff0c;保证你在下一次大发布之前不会再有那么大压力。 最能衡量敏捷团队成功的标准就是将可用的软件发布给客户。但是&#xff0c;即使是有经验的软件团队也会感到十分痛苦&#xff0c;因为这也是验证已经完成的问题了&#xff1b;…...