我正在尝试了解有关如何使用Java读取文件的更多信息。
目前我有一些代码可以读取同一目录中的文件:
@Override
public Loader<List<Falla>> onCreateLoader(int i, Bundle bundle)
{
return new FallaLoader(this, F_URL);
}
@Override
public void onLoadFinished(Loader<List<Falla>> loader, List<Falla> fallas)
{
View loadingIndicator = findViewById(R.id.loading_indicator);
loadingIndicator.setVisibility(View.GONE);
mEmptyStateTextView.setText(R.string.no_fallas);
if (fallas != null && !fallas.isEmpty())
{
adapter.swap(fallas);
}
}
@Override
public void onLoaderReset(Loader<List<Falla>> loader) {
}
我的问题是当我尝试将文件移动到资源目录时。
File file = new File(getClass().getResource(fileName).getPath());
try (Scanner scanner = new Scanner(file)) {
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
result.append(line).append("\n");
}
scanner.close();
} catch (IOException e) {
e.printStackTrace();
}
我可以使用InputStream从资源目录中读取文件,但我试图避免这样做。文件变量是我期望的工作,但事实并非如此。
有没有人建议我应该从哪里开始?
答案 0 :(得分:0)
File file = new File(getClass().getResource("/"+fileName).getFile());
如果文件位于src/main/resources
文件夹的根目录,则使用Maven。
答案 1 :(得分:0)
这就是我最终解决这个问题的方法:
ClassLoader classLoader = getClass().getClassLoader();
File file = new File(classLoader.getResource("main/resources/" + fileName).getFile());
答案 2 :(得分:-1)
你可以试试以下吗?
ClassLoader classLoader = ClassLoader.getSystemClassLoader();
File file = new File(classLoader.getResource(fileName).getFile());