OK,我知道這是一個有點怪異的問題:Java:是否可以將原始數據存儲在源文件中?
我寫這篇文章的Java代碼,需要加載的原始數據(約13萬浮動分):
該數據不會改變,因爲我不想爲PC和Android編寫不同的加載方法,所以我想將它作爲float[]
嵌入到源文件中。
太糟糕了,似乎有65535條目的限制;有沒有一種有效的方法來做到這一點?
OK,我知道這是一個有點怪異的問題:Java:是否可以將原始數據存儲在源文件中?
我寫這篇文章的Java代碼,需要加載的原始數據(約13萬浮動分):
該數據不會改變,因爲我不想爲PC和Android編寫不同的加載方法,所以我想將它作爲float[]
嵌入到源文件中。
太糟糕了,似乎有65535條目的限制;有沒有一種有效的方法來做到這一點?
如果這是您唯一的問題,那麼您可以使用2或3個數組來解決極限問題。
將數據存儲在類路徑中的文件中;然後將該數據讀取爲ByteBuffer
,然後將其「轉換」爲FloatBuffer
。請注意,下面的代碼假定大端:
final InputStream in = getClass().getResourceAsStream("/path/to/data");
final ByteArrayOutputStream out = new ByteArrayOutputStream();
final byte[] buf = new byte[8192];
int count;
try {
while ((count = in.read(buf)) != -1)
out.write(buf, 0, count);
} finally {
out.close();
in.close();
}
final FloatBuffer buf = ByteBuffer.wrap(out.toByteArray()).asFloatBuffer();
從
FloatBuffer
然後,您可以.get()
。
爲什麼不將該數據存儲在類路徑中的文件中? – fge
,因爲android不會讓我從那裏加載任何東西,我必須寫一個不同的加載方法,從資產加載文件 – dosse91214
「android不會讓我加載任何東西」< - 什麼? Android中沒有'.getResourceAsStream()'? – fge