268 000語のリストを検索しようとしています。アイデアは、ユーザーが入力した単語がそのリストに存在するかどうかを確認することです。私は単純なI/Oストリームを使ってこれを達成しましたが、検索には約5秒かかります。これは長すぎます。私のファイルは現在Assetsにあります。私はファイルを検索するためのより効率的な方法を探していました。私はMemory Mapped Bufferに出くわしました。私は、次の例では、私のファイルを保存する場所をしかし、それは私には明らかではない。メモリマップされたファイルの場所
import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.nio.MappedByteBuffer;
import java.nio.channels.FileChannel;
public class ReadFiles {
private static String largeFile = "sowpods.txt";
public static void read() throws IOException {
File file = new File(largeFile);
FileChannel fileChannel = new
RandomAccessFile(file,"r").getChannel();
MappedByteBuffer buffer = fileChannel.map(
FileChannel.MapMode.READ_ONLY, 0, fileChannel.size());
System.out.println(buffer.isLoaded());
System.out.println(buffer.capacity());
}
}
私は資産にそれを残す場合は、どのように私はそれから読み取ることができますか?現時点では、 "sowpods.txt:オープンに失敗しました:ENOENT(そのようなファイルまたはディレクトリはありません)"というエラーメッセージが表示されています。あらゆるヒントありがとう!
ロードするファイルが/ assetsにある場合、パスは "assets/sowpods.txt"ではありませんか? – mcw
残念ながら、この方法ではアクセスできません。しかし、同じことに感謝します。 –