从Java中的文件中获取值

从Java中的文件中获取值,java,file,Java,File,如何从文本文件myFile.txt中获取与I对应的值(如果I=5,则必须获取57.05698808926067)?该值可能持续到25000 0->37.6715587270802 1->40.02056806304368 2->351.65161070935005 3->54.74486689415533 4->86.12063488461266 5->57.05698808926067 6->0.0 7->56.078343612293374

如何从文本文件
myFile.txt
中获取与I对应的值(如果I=5,则必须获取57.05698808926067)?该值可能持续到25000

0->37.6715587270802
1->40.02056806304368
2->351.65161070935005
3->54.74486689415533
4->86.12063488461266
5->57.05698808926067
6->0.0
7->56.078343612293374
使用此代码:

// Note: bounds checking left as an exercise
public double getDoubleFromFile(final String filename, final int index)
    throws IOException
{
    final List<String> list = Files.readAllLines(paths.get(filename),
        StandardCharsets.UTF_8);

    return Double.parseDouble(list.get(index));
}

逐行读取文件并检查
“->”
之前的字符,将它们解析为int并与
i
进行比较。然后获取
“->”
之后的值


您也可以逐行读取,并在每次读取一行时增加索引变量的值,当索引等于
i
时,获取
“->”之后的字符串

这个简单的方法是逐行阅读,直到你读到你的那一行

BufferedReader br = new BufferedReader(new FileReader(file));
String line;
int i=0;
while ((line = br.readLine()) != null) {
   if (i == muLineNumber){
       // process the line. 
       break;
   }

   i++;
}
br.close();
如果每行的大小为常量,则可以使用

如果文件大小较小,请使用


选择最适合您的

因为25000行不是那么大,我会将整个文件加载到一个数组中,并使用I作为数组的索引。但是,如果我对内存使用有严格的限制,我会使用RandomAccessFile,在I*平均行长度周围设置位置,找到下一个“\n”,然后读取索引,如果索引是我正在查找的索引,我会读取该行的其余部分,否则,如果索引较大,则上移,如果索引较小,则下移,然后重复这个过程。

你试过什么吗?你能发布你的程序代码吗?如果文件的格式像
0=37.6715587270802
它是属性文件的理想候选:)@Subir Kumar Sao:只有25K行的属性文件将无法处理一行。你还可以在读取文件中的值后创建Hashmap和拆分(“->”)。让键为0,1,…,25000,值为相应的值。
FileUtils.readLines()
基本上被Java 7的
文件所取代。readAllLines()
Heh,Java 8今天(3月18日周四)推出,人们仍然不使用新的Java 7文件API;)它比
文件
好几英里。您可能想阅读,希望您会发现它有用Java 7突出显示:
BufferedReader br = new BufferedReader(new FileReader(file));
String line;
int i=0;
while ((line = br.readLine()) != null) {
   if (i == muLineNumber){
       // process the line. 
       break;
   }

   i++;
}
br.close();