如何修复此“ java.io.FileNotFoundException”

时间:2019-08-28 23:54:04

标签: java eclipse file-io executable-jar

我的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;
    }

}

这是输入文件的方法。我需要一种在编译后不会出错的方法。我将Eclipse IDE与以下配置一起使用:Eclipse Configuraiton

1 个答案:

答案 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,请确保使用\,\本身就是转义字符)。

希望有帮助。