在java中读取文件时出错

在java中读取文件时出错,java,file-io,input,javax.imageio,Java,File Io,Input,Javax.imageio,我正在尝试用java读取jpeg图像,并将其转换为二维数组。代码如下 import java.awt.image.BufferedImage; import java.io.IOException; import java.net.URL; import javax.imageio.ImageIO; public class JpegToArray { public static void main(String[] args) throws IOException { URL u

我正在尝试用java读取jpeg图像,并将其转换为二维数组。代码如下

import java.awt.image.BufferedImage;
import java.io.IOException;
import java.net.URL;
import javax.imageio.ImageIO;

public class JpegToArray {

public static void main(String[] args) throws IOException {

    URL url = JpegToArray.class.getResource("img/abc.jpg");
    BufferedImage img = ImageIO.read(url);
    @SuppressWarnings("unused")
    int[][] _img = convert_to_2d_Array(img);
}

private static int[][] convert_to_2d_Array(BufferedImage image) {
    int width = image.getWidth();
    int height = image.getHeight();

    int[][] result = new int[height][width];

    for (int row = 0; row < height; row++) {
        for (int col = 0; col < width; col++) {

            result[row][col] = image.getRGB(col, row);
            System.out.println(result[row][col]);
        }
    }
    return result;
}
}

我在这里做错了什么?

我假设您的目录结构如下,img文件夹不在类路径中

/PR1 
|-- bin
    -- JpegToArray.class
|-- img
    -- abc.jpg
|-- src
    -- JpegToArray.java
如果是这样,您可以获得类的父目录和

String parentPath = new File(JpegToArray.class.getResource("").getPath()).getParent();
URL url = new File(parentPath + "/img/abc.jpg").toURI().toURL();
BufferedImage img = ImageIO.read(url);
或者直接没有url之类的

String parentPath = new File(JpegToArray.class.getResource("").getPath()).getParent();
BufferedImage img = ImageIO.read(new File(parentPath + "/img/abc.jpg"));

根据您的文件夹结构,可能存在以下可能性:

1.您必须将您的
img
文件夹包含在课程路径中

在eclipse中,右键单击eclipse项目并选择 属性,选择左侧的Java构建路径链接。然后选择 选项卡。您将看到所有java源文件夹的列表。你 甚至可以添加您自己的。默认情况下,{project}/src文件夹是 类路径文件夹

如果已完成此操作,则会在部署文件夹中看到映像。在您的情况下,它是
bin
它必须存在于文件夹
img
中,但您的bin文件夹中没有
img
文件夹或图像文件

2.如果不想在类路径中添加
img
,则应将此
img
文件夹保留在
src
文件夹中,以便默认情况下与
src
文件夹一起部署

如果您选择第二个,则您的URL应按如下方式装箱:

URL url = Test.class.getResource("/img/acctmanager.png");  
确保您的
img
文件夹也与主
src
文件夹一起部署。如果部署正确,您应该在bin文件夹中找到它


我希望这会对您有所帮助。

您是否检查了url?在执行main的第一行之后,“url”的值是多少?如果为空,则在类路径上找不到img/abc.jpg。看起来好像找不到图像。你能展示你的项目布局吗?jpg和teh课程在哪里?请尝试
JpegToArray.class.getResource(“/img/abc.jpg”)
相对于您的项目,图像abc.jpg位于何处?确实,项目布局有问题,因此找不到图像。
URL url = Test.class.getResource("/img/acctmanager.png");