Wie man FileInputStream auf die Datei im Ordner "assets"
Ich wissen, wie die AssetManager
zu Lesen File
von der res/raw
Verzeichnis mit einem InputStream
, aber für meinen speziellen Anwendungsfall brauche ich eine FileInputStream
. Den Grund brauche ich eine FileInputStream
speziell ist, weil ich auf die FileChannel
Objekt durch Aufruf getChannel()
.
Dies ist der code, den ich bisher liest es die Daten (in meinem Fall eine Liste von stammfunktionen) von einem File
:
public static int[] loadByMappedBuffer(Context context, String filename) throws IOException{
FileInputStream fis = context.openFileInput(filename);
FileChannel ch = fis.getChannel();
MappedByteBuffer mbuff = ch.map(MapMode.READ_ONLY, 0, ch.size());
IntBuffer ibuff = mbuff.asIntBuffer();
int[] array = new int[ibuff.limit()];
ibuff.get(array);
fis.close();
ch.close();
return array;
}
Hatte ich versucht zu erstellen File
aus einer Uri
aber, dass nur Ergebnisse in einem FileNotFoundException
:
Uri uri = Uri.parse("android.resource://com.example.empty/raw/file");
File file = new File(uri.getPath());
FileInputStream fis = new FileInputStream(file);
Gibt es eine Möglichkeit, die ich bekommen kann eine FileInputStream
zu einem File
im res/raw
Verzeichnis?
- Ich denke, deine URL ist das problem.Und sollten Sie aus dem Verzeichnis "assets".
- Also alles, was Sie brauchen, ist zu Lesen, der Inhalt der Datei als int-array? Bin ich richtig?
- ja, aber ich brauche, um es schnell, die Methode, die ich gab, liest 80K*4 bytes auf und wandeln es in int array von 6-7 ms auf meinem PC
- Ich hatte auch versucht
Uri uri = Uri.parse("android.resource://com.example.empty/" + R.raw.file);
- Versuchen Sie dies: InputStream myInput = myContext.getAssets().open(YOUR_FILE_NAME)
- Ich brauche
FileInputStream
und ich arbeite nicht bei der DB arbeite ich mit der text Datei - Ich aktualisiert meine Bemerkung, und Sie müssen nur in der Lage sein, die Datei zu Lesen, richtig?
- aber es immer noch
InputStream
- FileInputStream myfileInput = getResources().getAssets().open(FILE_NAME); funktioniert.
- Ich bin "nur" im Stande sein müssen, verwandeln Sie diesen code für Android
- @MichaelHerasimov ??
- ok, ich werde es versuchen
- Ich meine, ich hatte, gab code, liest die Datei aus
files
Verzeichnis und ich brauche die Datei Lesen, indem Sie diese Methode vonraw
Verzeichnis open
Methode gibtInputStream
- getResources().getAssets().open() nicht zurück FileInputStream. Es gibt AssetInputStream.
- und es gibt einen Weg, um
FileInputStream
ausAssetInputStream
? - Es scheint der einzige Weg, Ihre Daten zu Lesen ist mit InputStream...
- aber wie man wiyh
nio
wenn ichInputStream
? - Sie brauchen nicht für diese. Konzentration auf das problem, das angezeigt wird, Lesen Sie ein array von ints aus einem InputStream. Sie brauchen nicht einen MappedByteBuffer für, die.
- Verwandtes problem: stackoverflow.com/questions/30395744/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie sich einen
FileInputStream
auf eine Ressource in Ihrem Vermögen wie in diesem:Den
fileName
Sie die VersorgungopenFd()
sollte der relative Pfad zu der Ressource die gleichenfileName
Sie liefern würde, umopen()
.Alternativ können Sie auch die
FileInputStream
wie diese: