我正在尝试进行双线性插值,为此我必须读取包含NxM维度的txt文件。
我需要读取特定行和列的值,我认为有两个选项:
-
直接从txt文件中读取该值,知道尝试在哪一列和哪一行。如果可能的话,你知道吗?
-
另一种方法是,读取所有文件并存储在第二个数组中,然后读取指向第二个阵列上确切列和行的所需值。
该文件用多臂空间分隔每个值。我认为该文件必须存储在资产上,不是吗?我将感谢任何代码或文档(我没有找到)
提前感谢;)
如果在使用值之前将txt文件加载到2D数组中,您的应用程序肯定会运行得更快。从持久存储中打开某个东西要比在内存中查找它花费更长的时间。
根据数组的大小,您可能会耗尽内存,这时您需要更加聪明地确定在每个阶段要处理文件的哪些部分。
StackOverflow上有很多关于从Java文本文件中读取2D数组的问题,在Android中应该类似。
嗨,最后我读到一个二维数组为:
public double[][] readArray2D(Context c, String file,int rows,int cols) throws IOException {
double [][] data = new double[rows][cols];
int row = 0;
int col = 0;
BufferedReader bufRdr = null;
try {
bufRdr = new BufferedReader(new InputStreamReader(c.getAssets().open(file)));
} catch (IOException e) {
e.printStackTrace();
}
String line = null;
//read each line of text file
try {
while((line = bufRdr.readLine()) != null && row < data.length)
{
StringTokenizer st = new StringTokenizer(line," ");
while (st.hasMoreTokens())
{
//get next token and store it in the array
data[row][col] = Double.parseDouble(st.nextToken());
col++;
}
col = 0;
row++;
}
} catch (IOException e) {
e.printStackTrace();
}
return data;
}
感谢所有人;)