Größe der Datei, die wir durch AssetManager Funktion getAssets in Android bekommen

AssetManager mngr = getAssets(); test_file = mngr.open("sample.txt"); 

Oberhalb der test_file-Variable ist vom InputStream-Typ. Irgendeine Möglichkeit, die Dateigröße von sample.txt zu berechnen?

  • Geschwindigkeitsänderungsbefehl fehlschlägt, wenn kein Audiostream im Video vorhanden ist - ffmpeg
  • So stellen Sie TextColor mit setTextColor ein (ColorsStateList Farben)
  • Beim Aufruf von TextView.setText () wird der gesamte Bildschirm trotz der Ansichtshierarchie neu gezeichnet
  • Android CollapsingToolbarLayout Zusammenbruch Hörer
  • Amazon IAP SDK: Keine Antwort beim Testen von IAPs in Live App Testing
  • Auswählen mehrerer Elemente in ListView
  • Android-Anwendung erfordert große Datendateien
  • Android verzögert Benachrichtigung
  • Android - R kann nicht auf eine Variable
  • So importiere ich ein bestehendes Projekt aus Github in Android Studio
  • Action Bar Tabs füllen nicht die Bildschirmbreite
  • Kamera-Oberfläche Bilder ansehen Ausgespannt
  • 4 Solutions collect form web for “Größe der Datei, die wir durch AssetManager Funktion getAssets in Android bekommen”

    Ich denke, das wird für Sie arbeiten:

     test_file.available(); 

    Android-Entwickler-Website:

     final int available() Returns an estimated number of bytes that can be read or skipped without blocking for more input. 

    Ich habe eine Alternative, um eine Datei in Assets mit AssetFileDescriptor zu erhalten:

     AssetFileDescriptor fd = getAssets().openFd("test.png"); Long size = fd.getLength(); 

    Ich hoffe es hilft.

     test_file.available(); 

    Ist nicht eine sehr zuverlässige Methode, um die Dateilänge zu bekommen, wie in den docs angegeben ist.

     size = fd.getLength(); 

    Mit dem FileDescriptor wie von Ayublin gezeigt ist!

    Seine Antwort sollte auf die richtige Antwort gefördert werden.

    inputStream.available() könnte mit der Dateigröße übereinstimmen, wenn die Datei sehr klein ist, aber für größere Dateien wird es nicht erwartet, dass sie übereinstimmen.

    Für einen komprimierten Asset ist der einzige Weg, um die Größe zuverlässig zu bekommen, um es in das Dateisystem zu kopieren, ex: context.getCacheDir() dann lesen Sie die Länge der Datei von dort aus. Hier ist ein Beispielcode, der das tut. Es ist wohl auch sinnvoll, die Datei aus dem Cache-Verzeichnis zu verwenden, im Gegensatz zu den Assets danach.

     String filename = "sample.txt"; InputStream in = context.getAssets().open(filename); File outFile = new File(context.getCacheDir(), filename); OutputStream out = new FileOutputStream(outFile); try { int len; byte[] buff = new byte[1024]; while ((len = in.read(buff)) > 0) { out.write(buff, 0, len); } } finally { // close in & out } long theRealFileSizeInBytes = outFile.length(); 

    Sie sollten auch die Datei aus dem Cache-Verzeichnis löschen, wenn Sie damit fertig sind (und der gesamte Cache-Verzeichnis wird auch automatisch gelöscht, wenn Sie die App deinstallieren).

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.