如何从Maven中的src / main / resources复制文件?

时间:2015-01-09 19:40:34

标签: java maven

imgur

嗨,我想复制" play button.png" to" C:\ Users \ Wyatt \ AppData \ Roaming \ .The Labyrinth \ Assets \ Images"。我尝试使用这段代码:

File appdata = new File(System.getenv("APPDATA"));
File datafolder = new File(appdata, ".The Labyrinth");

File assets = new File(datafolder, "Assets");
assets.mkdir();

Files.copy(Paths.get("src\\main\\resources\\assets\\play button.png"), Paths.get(assets + "\\Images\\play button.png"));

但它引发了一个例外。

java.nio.file.NoSuchFileException: src\main\resources\assets\play button.png -> C:\Users\Wyatt\AppData\Roaming\.The Labyrinth\Assets\Images\play button.png
at sun.nio.fs.WindowsException.translateToIOException(Unknown Source)
at sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
at sun.nio.fs.WindowsFileCopy.copy(Unknown Source)
at sun.nio.fs.WindowsFileSystemProvider.copy(Unknown Source)
at java.nio.file.Files.copy(Unknown Source)
at com.awsp8.labyrinth.TheLabyrinth.install(TheLabyrinth.java:73)
at com.awsp8.labyrinth.TheLabyrinth.main(TheLabyrinth.java:32)

TheLabyrinth.java:73就是这段代码:

Files.copy(Paths.get("src\\main\\resources\\assets\\play button.png"), Paths.get(assets + "\\Images\\play button.png"));

也许我这样做错了?我不知道。提前谢谢。

1 个答案:

答案 0 :(得分:0)

不确定你想做什么,但是:

1)在你的java代码中使用/代替\,它也适用于Windows,最好维护。

2)你的src / main / resources / assets / play button.png是相对于运行代码的目的地,我怀疑是C:\ Users \ Wyatt \ AppData \ Roaming。Labyrinth \ Assets \ Images \是你要指向的目录。

3)如果你在\ main \ reources中有你的play button.png(可怕的名字,我讨厌带空格的名字:-))并使用maven标准布局你可能已经在你的类路径上了,不要你呢?如果是这样,为什么不使用类似ClassLoader.getSystemClassLoader()。getResourceAsStream(" play button.png")来获取InputStream来读取?

4)如果你真的想通过Maven复制一些东西(你的问题标题是关于,但我很确定你的问题不是),这是如何做的示例:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-antrun-plugin</artifactId>
    <version>${maven.antrun.plugin.version}</version>
    <executions>
        <execution>
            <id>copy jars</id>
            <phase>install</phase>
            <configuration>
                <target>
                    <copy file="${project.basedir}/src/main/resources/play button.png"
                                tofile="somewhere i want to copy.png" />
                </target>
                </configuration>
                <goals>
                    <goal>run</goal>
                </goals>
        </execution>
    </executions>
</plugin>