我试图将位于文件夹(eclipse包src / myFolder中)的文本文档读入String []。我怎样才能做到这一点?我应该使用bufferedReader还是扫描仪?必须将文档中的每个单词标记为文档ID。例如:如果第一个文件有句子"春天在这里"第二个文本文件有句子"让我们玩得开心#34;输出就像
Spring 1
is 1
here 1
Let's 2
have 2
fun 2
我主要担心的是阅读多份文件。这是我尝试阅读文件。
public static void main(String[] args){
String[] docs = {"Spring is here"};
File[] listOfMyFiles=null;
String[] myDocs;
File folder = new File("src/Lab1_Data");
listOfMyFiles = folder.listFiles();
myDocs = new String[listOfMyFiles.length];
for(int i=0;i<listOfMyFiles.length;i++) {
myDocs[i] = listOfMyFiles[i].getName();
System.out.println("File: " + listOfMyFiles[i].getName());
}
....
我得到Null Pointer异常,可能是错误,是路径吗?
答案 0 :(得分:1)
您的代码应该是这样的:
public File getFolder(String folderName) throws URISyntaxException {
URL url = this.getClass().getResource("/Lab1_Data");
File file = new File(url.toURI());
return file;
}
您收到NullPointerException,因为代码找不到文件夹位置,因此您的文件对象具有空值。
答案 1 :(得分:0)
我不知道你是否在复制代码时犯了错误,但你声明了一个名为listOfFiles
的文件数组,但稍后你会尝试分配一个名为listOfMyFiles
的变量。我没有得到的是为什么JAVA没有告诉你你使用了未声明的变量。
顺便说一句,您可以复制整个异常堆栈或引发的行吗?
答案 2 :(得分:0)
将File[] listOfFiles=null;
更改为File[] listOfMyFiles=null;
似乎可以解决此问题。
如果您引用的目录不存在,则可能会获得NullPointerException
。
答案 3 :(得分:0)
File类在操作系统的路径上运行。致电
new File( "src/myFolder")
构造相对于当前工作目录的逻辑路径对象。这取决于您启动程序的位置。它与类路径无关。
如果要在类路径中访问文件,则必须使用Classloader.getSystemResource方法:
URL url = ClassLoader.getSystemResource( "src/Lab1_Data");
File ch = new File(url.toURI());
File[] files = ch.listFiles();
假设&#34; src&#34;是包路径的根元素。之后你可以迭代文件:
for ( File file : files )
{
// do something with the file
}