Как правильно добавить имя текстового файла местоположения в Eclipse в Java в сканер файлов сканера - PullRequest
0 голосов
/ 22 февраля 2019

введите описание изображения здесь Я пытаюсь использовать текстовый файл для чтения, который находится в затмении, но он не может найти текстовый файл, который я поместил в затмение.

  import java.util.Scanner;
import java.io.*;
public class test {

    public static void main(String[] args)  {
        // TODO Auto-generated method stub
        Scanner sc = new Scanner (System.in);
        BagBase bb = new BagBase();

        System.out.println("Please enter items into the bag: ");
        try {
            start();
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
public static void start() throws FileNotFoundException {
        BagBase bb = new BagBase();
        Scanner sc = new Scanner (System.in);
        String wow;
        File f = new File("C:/Users/sruja/workspace/Prjocet1/src/ListForBag.txt");
        Scanner aa = new Scanner (f);
        wow=aa.nextLine();
        bb.inserItem(wow);
}
}

Спасибо за помощь.Я не был уверен, почему эта ссылка не была найдена, когда я положил в том же проекте

1 Ответ

0 голосов
/ 22 февраля 2019

Что вы подразумеваете под "файл в затмении"?Это в папке ресурсов?Какова структура вашего проекта?

Если у вас была следующая структура:

MyProject/src/main/java/analysis/ResourceReader.java
MyProject/src/main/resources/text.txt

Тогда вы можете получить доступ к файлу text.txt с помощью следующей функции (передайте имя файла какпараметр этой функции):

private static Reader getReaderFromResource(String resourceName) {
    URL resource = ResourceReader.class.getClassLoader().getResource(resourceName);
    URL url = Objects.requireNonNull(resource);
    String decodedStr = URLDecoder.decode(url.getFile(), "UTF-8");
    return new FileReader(new File(decodedStr));
}

Затем вы можете заполнить конструктор BufferedReader экземпляром, полученным при выполнении этого метода (не забывайте об обработке исключений!), и в конечном итоге прочитать файл построчно.


РЕДАКТИРОВАТЬ

Итак, увидев, что вы пытаетесь сделать, я бы сказал следующее:

Создайте проект (лучшим будет проект maven).), так что у вас есть структура, похожая на ту, что я уже описал.Хорошей практикой является размещение ресурсов в отдельной папке в проекте, не разделенной где-либо на вашем диске.

Этот код требует некоторого рефакторинга, но я не обращаюсь к нему в этом ответе, радипростота.

public class test {

public static void main(String[] args) {
    // TODO Auto-generated method stub
    Scanner sc = new Scanner(System.in);
    BagBase bb = new BagBase();

    System.out.println("Please enter items into the bag: ");
    try {
        start();
    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }


}

public static void start() throws FileNotFoundException {
    BagBase bb = new BagBase();
    Scanner sc = new Scanner(System.in);
    String wow;
    List<String> dataFromFile = new ArrayList<>();
    try (BufferedReader reader = new BufferedReader(getReaderFromResource("shoppingList"))) {
        String currentLine = null;
        while ((currentLine = reader.readLine()) != null) {
            System.out.println(currentLine); // prints content of a file, just for the record
            dataFromFile.add(currentLine); 
        }

        bb.setBag(dataFromFile);
    } catch (Exception e) {
        e.printStackTrace();
    }
}

private static Reader getReaderFromResource(String resourceName) throws FileNotFoundException, UnsupportedEncodingException {
    URL resource = test.class.getClassLoader().getResource(resourceName);
    URL url = Objects.requireNonNull(resource);
    String decodedStr = URLDecoder.decode(url.getFile(), "UTF-8");
    return new FileReader(new File(decodedStr));
}

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...