Se já estiver no caminho de classe, basta obtê-lo do caminho de classe em vez do sistema de arquivos do disco. Não mexa com caminhos relativos em java.io.File
. Eles dependem do diretório de trabalho atual sobre o qual você não tem nenhum controle de dentro do código Java.
Supondo que ListStopWords.txt
esteja no mesmo pacote de sua FileLoader
classe, faça:
URL url = getClass().getResource("ListStopWords.txt");
File file = new File(url.getPath());
Ou se tudo o que você está procurando é na verdade um InputStream
deles:
InputStream input = getClass().getResourceAsStream("ListStopWords.txt");
Isso certamente é preferido em vez de criar um new File()
porque url
pode não representar necessariamente um caminho do sistema de arquivos do disco, mas também pode representar o caminho do sistema de arquivos virtual (o que pode acontecer quando o JAR é expandido na memória em vez de em uma pasta temporária no sistema de arquivos do disco) ou mesmo um caminho de rede que não é digerido por definição pelo File
construtor.
Se o arquivo for - como o nome do pacote sugere - é na verdade um arquivo de propriedades completo (contendo key=value
linhas) com apenas a extensão "errada", então você pode alimentar InputStream
imediatamente o load()
método.
Properties properties = new Properties();
properties.load(getClass().getResourceAsStream("ListStopWords.txt"));
Nota: quando você está tentando acessá-lo de dentro do static
contexto, use FileLoader.class
(ou qualquer outra coisa YourClass.class
) em vez dos getClass()
exemplos acima.
properties.files
para2
?