Не удается прочитать файл при запуске программы из командной строки, но он работает из Eclipse - PullRequest
0 голосов
/ 02 декабря 2010

У меня есть простая java-программа, которая отлично работает в eclipse, но не может найти .txt-файлы, из которых я читаю и записываю при запуске из командной строки.Я попытался изменить права доступа к файлам, но поскольку они запускаются в Eclipse, похоже, это не проблема.У меня нет опыта чтения из файлов на Java.Но я думаю, что это вопрос пути или что-то.Может кто-нибудь помочь мне исправить мой скрипт или что-то еще, чтобы он работал?

Я получаю кучу таких:

java.io.FileNotFoundException: helloState.txt (No such file or directory)
    at java.io.FileInputStream.open(Native Method)
    at java.io.FileInputStream.<init>(FileInputStream.java:106)
    at bot.FileRead.readByLine(FileRead.java:33)
    at bot.BuildStates.buildStates(BuildStates.java:16)
    at bot.Kate.main(Kate.java:98)

Моя файловая структура выглядит следующим образом: CS317_A4 / src / myPackage / (class andисходные файлы)

Мои текстовые файлы находятся в каталоге CS317_A4, а мой скрипт находится в каталоге src (я не могу запустить программу из каталога CS317_A4

Вот мой сценарий длязапуск программы:

#!/bin/bash

set classpath=
java -cp .:.. bot.Kate

Вот как я могу открыть файл:

public LinkedList<String> readByLine(String filename) {

    File file = new File(filename);
    FileInputStream fis = null;
    BufferedInputStream bis = null;
    BufferedReader br = null;
    String in;
    LinkedList<String> fileLines = new LinkedList<String>();


    try {
        fis = new FileInputStream(file);
        bis = new BufferedInputStream(fis);
        br = new BufferedReader(new FileReader(file));


        while(br.ready()){
            /* read the line from the text file */
            in = br.readLine();

            /* if the line is empty stop reading */
            if(in.isEmpty()){
                break;
            }
            /* add the line to the linked list */
            fileLines.add(in);

        }

        /* dispose all the resources after using them. */
        fis.close();
        bis.close();

    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }

    return fileLines;

}

1 Ответ

0 голосов
/ 02 декабря 2010

Попробуйте запустить его из каталога выше src. В качестве classpath используйте src.

...