Java getResourceAsStream()在内置产品中不起作用

Java getResourceAsStream()在内置产品中不起作用,java,eclipse-rcp,rcp,Java,Eclipse Rcp,Rcp,我正在尝试使用以下代码将图像文件从资源文件夹复制到本地系统 InputStream inStream = null; OutputStream outStream = null; File bfile = new File(directoryPath + "/icons/" + outputFileName); inStream = MyClass.class.getClassLoader().getResourceAsStream("/images/" + imgFileNam

我正在尝试使用以下代码将图像文件从资源文件夹复制到本地系统

  InputStream inStream = null;
  OutputStream outStream = null;
  File bfile = new File(directoryPath + "/icons/" + outputFileName);
  inStream = MyClass.class.getClassLoader().getResourceAsStream("/images/" + imgFileName);
  try {

        outStream = new FileOutputStream(bfile);

        byte[] buffer = new byte[1024];

        int length;

        if (inStream != null && outStream != null) {
            // copy the file content in bytes
            while ((length = inStream.read(buffer)) > 0) {

                outStream.write(buffer, 0, length);

            }

            inStream.close();
            outStream.close();
        } 
        System.out.println("File is copied successful!");

    } catch (IOException e) {
        e.printStackTrace();
    }
当我运行eclipse时,这段代码工作得非常好。但当我构建产品时,图标不会被复制到本地系统

我也试过了

inStream = MyClass.class.getResourceAsStream("/images/" + imgFileName);
但是没有运气


任何想法

> P>打开输入流考虑使用FieleCopor API:

    FileInputStream is = null;
    FileOutputStream fo = null;
    FileChannel inputChannel = null;
    FileChannel outputChannel = null;
    File bfile = new File(directoryPath + "/icons/" + outputFileName);
    try {
        is = FileLocator.openStream(Activator.getDefault().getBundle(), new Path("/images/" + imgFileName), false);
        inputChannel = is.getChannel();
        fo = new FileOutputStream(bfile);
        outputChannel = fo.getChannel();
        outputChannel.transferFrom(inputChannel, 0, inputChannel.size());
    } finally {
        // close everything in finally
    }

<>也请注意,在<>代码>最后的<>代码>块/< p> < p>打开输入流时,请考虑使用FieleloCopaAPI:

    FileInputStream is = null;
    FileOutputStream fo = null;
    FileChannel inputChannel = null;
    FileChannel outputChannel = null;
    File bfile = new File(directoryPath + "/icons/" + outputFileName);
    try {
        is = FileLocator.openStream(Activator.getDefault().getBundle(), new Path("/images/" + imgFileName), false);
        inputChannel = is.getChannel();
        fo = new FileOutputStream(bfile);
        outputChannel = fo.getChannel();
        outputChannel.transferFrom(inputChannel, 0, inputChannel.size());
    } finally {
        // close everything in finally
    }
另外,请注意,最好关闭
finally
块中的流和通道