如何在java中的eclipse中正确添加位置文本文件的名称到Scanner文件阅读器中

问题描述 投票:0回答:1

enter image description here我正在尝试使用一个文本文件来读取它在eclipse中但它无法找到我放入eclipse的文本文件。

  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);
}
}

谢谢你的帮助。我不确定为什么当我放入同一个项目时找不到这个链接

java eclipse
1个回答
0
投票

“文件在日食中”是什么意思?它在资源文件夹中吗?你的项目结构是什么?

如果您有以下结构:

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项目),这样你就有了一个类似于我已经描述过的结构。将资源放在项目中的seprate文件夹中是一种很好的做法,而不是在磁盘上的某个位置拆分。

这段代码需要一些重构,但为了简单起见,我在这个答案中没有提到它。

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));
}

}

© www.soinside.com 2019 - 2024. All rights reserved.