我的RPG在编译器中运行良好。它输入文件并使用Scanner读取它,但是当我将其导出到“ .jar”文件中时,它将引发FileNotFoundException。
我尝试将文件放在其他位置。我尝试使用其他方式来调用文件。似乎什么都没用。
package worldStuff;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class World {
public static String[][] initWorld(String[][]array,String name) throws FileNotFoundException {
int j = 0;
String string;
Scanner input = new Scanner(new File(name+".map"));
while(j!=30) {
string = input.nextLine();
array[j] = string.split(",");
j++;
}
input.close();
return array;
}
}
答案 0 :(得分:1)
如果您可以选择使用Java8,怎么办?
public static void main( String[] args ) {
try {
String[][] output = initWorld( "E:\\Workspaces\\Production\\Test\\src\\test\\test" );
for ( String[] o : output ) {
if ( o == null || o.length == 0 ) { break; }
System.out.println( "- " + o[0] );
}
} catch ( FileNotFoundException ex ) {
ex.printStackTrace();
}
}
public static String[][] initWorld( String name ) throws FileNotFoundException {
String array[][] = new String[30][];
try (Stream<String> stream = Files.lines(Paths.get(name))) {
List<String> inputList = stream.collect(Collectors.toList());
for ( int i = 0; i < 30 && i < inputList.size(); i++ ) {
array[i] = inputList.get( i ).split( "," );
}
} catch (IOException e) {
e.printStackTrace();
}
return array;
}
出于测试目的,主要方法是jsut(打印每个初始化数组的第一个元素)。
此外,无需传递String [] []作为参数。
只需将initWorld参数替换为目标文件的路径即可(如果使用的是Windows,请确保使用\,\本身就是转义字符)。
希望有帮助。