簡體   English   中英

如何從源包而不是資源目錄加載文件

[英]How to load a file from source package not resource directory

這個項目是Maven項目

我想讀取文件而不是資源目錄中的同一包

我知道下面

  1. 在Maven結構中讀取資源目錄中的資源文件
  2. 在運行時,應用程序讀取目標目錄中的文件

並且真正知道為什么目錄(源,資源)被拆分。

但是我不知道如何讀取同一包中不在資源目錄中的文件,即使它不是正式的(出於好奇)

FileIo.java

package hardlearner.springStudy.learningtest.io;

import java.io.IOException;
import java.io.InputStream;

public class FileIo {
    public static void main(String[] args) throws IOException {
        InputStream is = FileIo.class.getResourceAsStream("sample.txt");
        if ( is == null) {
            System.out.println("null");
        }else {
            System.out.println("not null");
            System.out.println((char)is.read());
        }
    }
}

sample.txt

plz read me

FileIo.java的主程序在正常的Java項目上運行良好,但是maven項目卻沒有

如果我將sample.txt文件復制到目標目錄中的同一包(io包)中,則檢查工作是否正常

但不是那些,我如何在maven項目中的同一包中讀取文件?

從同一包中讀取文件

目標目錄為空資源(sample.txt)

給我一個問題的答案。

首先,我不清楚如何在Java項目上進行Maven構建。

如果我使用maven項目構建Java項目,則資源目錄中的文件將復制到target / classes /

並編譯其他以“ .java”結尾的目錄文件。

編譯的“ .class”文件位於目標/類/ {包路徑}。

但是除結尾的“ .java”以外的其他文件都沒有定位到目標目錄。

因為maven的默認構建設置僅將資源目錄中的文件復制到目標目錄。

因此,我使用自定義設置進行構建。

<build>
    <resources>
        <resource>
            <filtering>true</filtering><!-- if it is neccessary -->
            <directory>${project.basedir}/src/main/java/hardlearner/springStudy/user/sqlservice</directory><!-- from -->
            <targetPath>${project.build.directory}/classes/hardlearner/springStudy/user/sqlservice</targetPath><!-- to -->
            <includes><!-- what -->
                <include>sqlmap.xml</include>
            </includes>
        </resource>
    </resources>
</build>

將源包中的sqlmap.xml復制到目標目錄的設置將構建相同的包結構。

<bean id="sqlService" class="hardlearner.springStudy.user.sqlservice.XmlSqlService">
<!-- value for target/claases/hardlearner/ ... -->    
    <property name="sqlmapFile" value="/hardlearner/springStudy/user/sqlservice/sqlmap.xml"/>
</bean>

如果我沒有設置用於將文件復制到目標目錄的自定義生成選項,則sqlService bean的屬性值只是“ /sqlmap.xml”。 但是為此,sqlmap.xml文件位於資源目​​錄中。

復制成功

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM