在Java中读取txt文件中的特定行
文件ListeMot.txt包含336529行 如何抓住一条特定的线 这是我的密码在Java中读取txt文件中的特定行,java,file-io,io,Java,File Io,Io,文件ListeMot.txt包含336529行 如何抓住一条特定的线 这是我的密码 int getNombre() { nbre = (int)(Math.random()*336529); return nbre ; } public String FindWord () throws IOException{ String word = null; int nbr= getNombre(); InputStreamReader reader = null
int getNombre()
{
nbre = (int)(Math.random()*336529);
return nbre ;
}
public String FindWord () throws IOException{
String word = null;
int nbr= getNombre();
InputStreamReader reader = null;
LineNumberReader lnr = null;
reader = new InputStreamReader(new FileInputStream("../image/ListeMot.txt"));
lnr = new LineNumberReader(reader);
word = lnr.readLine(nbr);
}
为什么我不能得到word=lnr.readLine(nbr)
谢谢
另外,我是爪哇的新手 要得到第n行,你必须阅读它前面的所有行 如果您多次这样做,最有效的方法可能是首先将所有行加载到内存中
private final List words=new ArrayList();
私有最终随机=新随机();
公共字符串randomWord()引发IOException{
if(words.isEmpty()){
BufferedReader br=新的BufferedReader(新的InputStreamReader(新文件InputStream(“../image/ListeMot.txt”));
弦线;
而((line=br.readLine())!=null)
添加(行);
br.close();
}
返回words.get(random.nextInt(words.size());
}
顺便说一句:参数
要使用的单词?在Java API中没有类似readLine(int lineNumber)
的方法。您应该读取特定行号中前面的所有行。我已经操纵了你的第二种方法,看看它:
public void FindWord () throws IOException
{
String word = "";
int nbr = getNombre();
InputStreamReader reader = null;
LineNumberReader lnr = null;
reader = new InputStreamReader( new FileInputStream( "src/a.txt" ) );
lnr = new LineNumberReader( reader );
while(lnr.getLineNumber() != nbr)
word = lnr.readLine();
System.out.println( word );
}
上面的代码不是没有错误的,因为我假设您知道给定文本文件中行号的限制,即,如果我们生成一个大于实际行号的随机数,代码将进入无限循环,请小心
另一个问题是,行号从1开始,因此我建议您更改随机行号生成器方法,如下所示:
int getNombre()
{
nbre = (int)(Math.random()*336529) + 1;
return nbre ;
}
只记录读取的行数,不允许对流中的行进行随机访问。我看不出有参数“theWord”的意义,但甚至不要尝试在代码中使用它。。
int getNombre()
{
nbre = (int)(Math.random()*336529) + 1;
return nbre ;
}