我是eclipse和Java的新手。 我有H.W任务,我需要编写一个读取.txt文件的类。
在模拟之前,我在C目录中创建了一个名为“in.txt”的文件。 在运行配置中,我写了“C:\ in.txt”作为参数。
我收到此错误:
java.io.FileNotFoundException:C:\ in.txt(系统找不到 文件指定)
at java.io.FileInputStream.open(Native Method)
在java.io.FileInputStream。(未知来源)
在java.io.FileInputStream。(未知来源)
在java.io.FileReader。(未知来源)
在Flesch.main(Flesch.java:25)
我也试过写“C:\ in.txt”并得到同样的错误。
这是我的代码:
import java.io.FileReader;
import java.io.BufferedReader;
import java.io.IOException;
import java.util.StringTokenizer;
public class Flesch {
public static void main(String[] args)
{
if (args.length != 1)
{
System.out.print("error");
return;
}
BufferedReader mybuffer = null;
try
{
String my_line;
int words_num=0;
int senteses=0;
int verbs=0;
int word_verbs = 0;
String word_delimtiters = " ()*&^%$#@!_-=[]{}?;:',.";
mybuffer = new BufferedReader(new FileReader(args[0]));
while((my_line = mybuffer.readLine())!= null)//reading the liens
{
//counting the number of words
StringTokenizer token = new StringTokenizer(my_line,word_delimtiters);
words_num += token.countTokens();
//counting the verbs
while (token.hasMoreElements())
{
String word = token.nextToken();
word = word.toLowerCase();
word_verbs = 0;
boolean last_char_is_verb = false;
for (int k=0;k < word.length(); k++ )
{
switch (word.charAt(k))
{
case 'a': if (!last_char_is_verb) word_verbs++; last_char_is_verb = true; break;
case 'e': if (!last_char_is_verb) word_verbs++; last_char_is_verb = true; break;
case 'i': if (!last_char_is_verb) word_verbs++; last_char_is_verb = true; break;
case 'o': if (!last_char_is_verb) word_verbs++; last_char_is_verb = true; break;
case 'u': if (!last_char_is_verb) word_verbs++; last_char_is_verb = true; break;
case 'y': if (!last_char_is_verb) word_verbs++; last_char_is_verb = true; break;
default: last_char_is_verb = false ;
}
}
if (word_verbs == 0)
word_verbs = 1;
verbs+= word_verbs;
}
//counting the number of sentecses
for(int i=0;i<my_line.length(); i++)
{
if(my_line.charAt(i) == '.' || my_line.charAt(i) == ',' || my_line.charAt(i) == ';' || my_line.charAt(i) == '?' || my_line.charAt(i) == '!')
{
senteses++;
}
}
}
double Flesch = 206.835 - 84.6*(verbs/words_num) -1015*(words_num/senteses);
System.out.print(Flesch);
System.in.read();
}
catch(IOException e)
{
e.printStackTrace();
}
finally
{
try
{
if (mybuffer != null)
mybuffer.close();
}
catch(IOException ex)
{
ex.printStackTrace();
}
}
}
}
我在网上搜索了这个错误,但没有找到有用的东西。 我感觉我好像缺少一些基本的东西
答案 0 :(得分:2)
路径中的反斜杠可能不是一个好主意。尝试使用&#34; /&#34;。
参考:file path Windows format to java format
否则,错误可能与扩展有关。请参阅:java.io.FileNotFoundException, file not being found
答案 1 :(得分:0)
有时一个斜杠是不够的,所以尝试提供“c:\ \ in.txt”我认为它会正常工作。
答案 2 :(得分:0)
我尝试了你的代码,它使用前向和反斜杠为我工作。也许这与该文件位置的权限有关。尝试将其移动到用户空间中的目录。
我在eclipse中设置了程序参数,所以如果你以前从命令行执行它,也许可以尝试一下。虽然从错误消息的外观来看,文件名是从命令行中读取的。
此外,您还有潜在的错误
double Flesch = 206.835 - 84.6*(verbs/words_num) -1015*(words_num/senteses);
如果words_num
或sentenses
为零,则可以除以零。你应该检查这个条件并妥善处理。
答案 3 :(得分:0)
尝试 C:\\ in.txt 。对于String文字,\是转义字符。如果你想在代码中使用\,你必须使用\。
答案 4 :(得分:0)
检查您是否正确传递了参数。
java Flesch C:\in.txt
应该工作
java Flesch "C:\in.txt"
也是
会导致FileNotFoundException
的参数:
java Flesch " C:\in.txt"
(注意空白)
java Flesch "C: \in.txt"
(注意空白)
java Flesch "C:\ in.txt"
(注意空白)