Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java:从当前src目录读取图像_Java_Image_Bufferedreader_Filereader_Bufferedimage - Fatal编程技术网

Java:从当前src目录读取图像

Java:从当前src目录读取图像,java,image,bufferedreader,filereader,bufferedimage,Java,Image,Bufferedreader,Filereader,Bufferedimage,我想从java类文件所在的当前src目录加载一个映像。但是,我总是得到一个IOException 如何确保文件在Mac/Linux和Windows上正确加载 到目前为止,我的代码是: String dir = System.getProperty("user.dir") + "/Logo_transparent.png"; File imageFile = new File(dir); BufferedImage bufferedImage = null; try { buffered

我想从java类文件所在的当前src目录加载一个映像。但是,我总是得到一个
IOException

如何确保文件在Mac/Linux和Windows上正确加载

到目前为止,我的代码是:

String dir = System.getProperty("user.dir") + "/Logo_transparent.png";
File imageFile = new File(dir);
BufferedImage bufferedImage = null;

try {
    bufferedImage = ImageIO.read(imageFile);
} catch (IOException e) {
    System.out.println(e.getMessage());
    System.out.println(dir);
    System.out.println();
}
IOException消息:

无法读取输入文件

(我的路径是正确的——是因为谷歌和硬盘之间的空间吗?)

/Users/myMac/googledrive/Privat/Programming/Logo_transparent.png


亲切的问候和感谢

我认为这是因为您没有创建该文件,如果该文件不存在,您可以使用此代码创建该文件

if(!imageFile.exists()) imageFile.createNewFile();
您的代码将如下所示

String dir = System.getProperty("user.dir") + "/Logo_transparent.png";
File imageFile = new File(dir);
BufferedImage bufferedImage = null;
try {
    if(!imageFile.exists()) imageFile.createNewFile();
    bufferedImage = ImageIO.read(imageFile);
} catch (IOException e) {
    System.out.println(e.getMessage());
    System.out.println(dir);
    System.out.println();
}
另外,您不应该像这样连接子文件,而是将其作为第二个参数传递

File imageFile = new File(System.getProperty("user.dir"), "Logo_transparent.png");

您可以尝试构建图像的绝对路径,如,然后读取它。

如果您的图像文件将与类文件打包在一起(例如在同一个.jar中),则不应使用文件,而应将其作为资源读取:

bufferedImage = ImageIO.read(this.getClass().getResourceAsStream("/Logo_transparent.png"));
请注意文件名前的“/”。这意味着在类路径的根路径中搜索。 如果指定without/it,则将在此(当前类)的包中搜索


你确定那是正确的路径吗?是的,我是有没有办法测试它?你能做
System.out.println(dir)
并告诉我们它返回了什么结果是:“/Users/myMac/Google Drive/Privat/Programming”@Jan,这个问题似乎不正确:你说你想从src目录获取这个图像,但我们指的是
/Users/myMac/Google Drive/Privat/Programming/Logo\u transparent.png
。明确你到底想做什么?它存在,我可以在我的Finder中看到它!您是否仍然可以运行以下代码并查看它是否仍然显示错误?@SamzSakerz,逻辑不正确,您正在检查文件是否存在,您将重新创建它。你忘了negation@SergeyProkofiev对不起,我已经50多岁没睡了hours@SamzSakerz为什么要尝试从新创建的空文件中读取图像?这不是问题所在。读标题。
this.getClass().getResourceAsStream("Logo_transparent.png")