所以我是Java的新手,我所尝试的一切都不起作用。从文件中读取有很多不同的方法,所以我想知道最简单的方法。基本上,这是一个疯狂填词的应用程序。一个方法。我一直试图成功地运行这个,我在file.close()
函数上得到一个错误。如果我把它拿走,我得到FileNotFoundException errors
。所以我有点迷路了。我应该改变什么?
public static void main(String[] args) throws Exception {
String[] nouns = new String[4];
String[] verbs = new String[6];
String[] adjectives = new String[7];
Scanner s = new Scanner(System.in);
System.out.println("Please input 4 nouns, press "Enter" after each input.");
for(int i=0; i<4; i++){
nouns[i] = s.next();
}
System.out.println("Please input 6 verbs, press "Enter" after each input.");
for(int i=0; i<6; i++){
verbs[i] = s.next();
}
System.out.println("Please input 7 adjectives, press "Enter" after each input.");
for(int i=0; i<7; i++){
adjectives[i] = s.next();
}
File file = null;
FileReader fr = null;
LineNumberReader lnr = null;
try {
file = new File("H:\10GraceK\AP Computer Science\Classwork\src\madlib.txt");
fr = new FileReader(file);
lnr = new LineNumberReader(fr);
String line = "";
while ((line = lnr.readLine()) != null) {
System.out.println(line);
}
} finally {
if (fr != null) {
fr.close();
}
if (lnr != null) {
lnr.close();
}
}
}
好的,我修复了异常。现在文件中的文本读取动词[0]之类的东西,但它实际上输出的是动词[0],而不是数组中的单词。如何将数组中的字符串附加到已读取的字符串上?
close
方法对于File
是未定义的。使用FileReader.close
代替。替换
file.close();
fr.close();
实际上关闭LineNumberReader
就足够了,因为这将关闭底层的FileReader
。您可以将close
放在finally
块中。请看下面的例子
在读取文件和流时,我总是推荐common -io。
试着使用例如:
IOUtils.readLines
你的代码中的错误是@Reimeus提到的缺少的方法
Scanner API得到了改进,并变得更容易:
try {
Scanner sc = new Scanner(new File("text.txt"));
sc.useDelimiter(System.getProperty("line.separator"));
String ln = sc.next();
} catch (FileNotFoundException ex) {
Logger.getLogger(this.class.getName()).log(Level.SEVERE, null, ex);
}