在这里输入图像描述我正在尝试使用一个文本文件来读取它在eclipse中但它无法找到我放入eclipse的文本文件。
import java.util.Scanner;import java.io. *;公共课……
“文件在日食中”是什么意思? 它在资源文件夹中吗?你的项目结构是什么?
如果您有以下结构:
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)); }
}