In J2ME, ich habe tun dies wie folgt aus: getClass().getResourceAsStream("/raw_resources.dat");
Android Wie bekomme ich Zugriff auf Roh-Ressourcen, die ich in res-Ordner einlege?
Aber in android, ich auf diese immer null bekommen, warum?
In J2ME, ich habe tun dies wie folgt aus: getClass().getResourceAsStream("/raw_resources.dat");
Android Wie bekomme ich Zugriff auf Roh-Ressourcen, die ich in res-Ordner einlege?
Aber in android, ich auf diese immer null bekommen, warum?
InputStream raw = context.getAssets().open("filename.ext");
Reader is = new BufferedReader(new InputStreamReader(raw, "UTF8"));
Bitte sehen Sie die Antwort von Samuh (unten), es ist genauer. – BoD
Als Randnotiz erlaubt Raw-Ordner keinen Zugriff durch den Dateinamen. Einige Anwendungen benötigen dynamische Dateinamen, in solchen Fällen ist der Ordner "assets" nützlich – Caner
er fragte nicht nach Assets/er fragte nach res/raw/ –
Für Raw-Dateien sollten Sie in Erwägung ziehen, einen Raw-Ordner im Res-Verzeichnis zu erstellen und dann getResources().openRawResource(resourceName)
von Ihrer Aktivität aus aufzurufen.
Samuh, danke für deine Antwort, wenn ich das mache, habe ich Fehler Android XML Format Problem, weil ich nicht Standard-XML verwende, gibt es andere Möglichkeit, es als wirklich Rohdaten zu verwenden? – Arkaha
was meinst du mit nicht-standard XML? Sie können XML-Dateien auch in Assets bündeln. – Samuh
Samuh, ich portiere j2me Anwendung, und es hat Dateien mit der Erweiterung * .xml, Inhalt solcher Dateien sehr ähnlich zu XML, aber nicht das gleiche, Eklipse schreiend auf diese Dateien, weil es nicht kompilieren kann. wahrscheinlich kann ich eine Art "ignorieren" auf diese Dateien setzen? aber ich weiß nicht, wie .. – Arkaha
TextView txtvw = (TextView)findViewById(R.id.TextView01);
txtvw.setText(readTxt());
private String readTxt()
{
InputStream raw = getResources().openRawResource(R.raw.hello);
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
int i;
try
{
i = raw.read();
while (i != -1)
{
byteArrayOutputStream.write(i);
i = raw.read();
}
raw.close();
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
return byteArrayOutputStream.toString();
}
TextView01 :: txtview in Linearlayout hallo :: .txt-Datei in res/raw Ordner (u ny othr Ordner als wel zugreifen können)
Ist 2 Linien 2 in onCreate geschrieben() Methode
Rest ist in der Klasse zu schreiben Verlängerung Aktivität!
In einigen Situationen müssen wir Bild von ziehbar oder roh Ordner erhalten unter Verwendung von Bildnamen statt, wenn erzeugt id
// Image View Object
mIv = (ImageView) findViewById(R.id.xidIma);
// create context Object for to Fetch image from resourse
Context mContext=getApplicationContext();
// getResources().getIdentifier("image_name","res_folder_name", package_name);
// find out below example
int i = mContext.getResources().getIdentifier("ic_launcher","raw", mContext.getPackageName());
// now we will get contsant id for that image
mIv.setBackgroundResource(i);
Diese Zeile: int i = mContext.getResources(). GetIdentifier (" ic_launcher "," roh ", mContext.getPackageName()); ist GOLD – Radu
Input in = GetResources() openRawResource (resource).
Dies funktioniert ordnungsgemäß. Zuvor müssen Sie die XML-Datei/Textdatei in der Roh-Ressource erstellen. Dann wird es zugänglich sein.
Bearbeiten
Manchmal wird com.andriod.R importiert, wenn ein Fehler in Layoutdatei oder Bildnamen vorliegt. Damit Sie das Paket korrekt importieren müssen, ist nur die Raw-Datei verfügbar.
openRawResource() benötigen ein int, keine Zeichenfolge http://developer.android.com/reference/android/content/res/Resources.html#openRawResource() – mmathieum
wird dies auch auf Ressourcen, die in der existieren Zeichnungsordner? –
Verwenden Sie "R.raw.NameOfResource" als int. – CristianCV
getClass().getResourcesAsStream()
funktioniert gut auf Android. Stellen Sie nur sicher, dass die Datei, die Sie öffnen möchten, korrekt in Ihrem APK eingebettet ist (öffnen Sie das APK als ZIP).
Normalerweise unter Android setzen Sie solche Dateien in das Verzeichnis assets
. Wenn Sie also die raw_resources.dat
im assets
Unterverzeichnis Ihres Projektes setzen, wird es in dem assets
Verzeichnis in der APK am Ende und Sie können verwenden:
getClass().getResourcesAsStream("/assets/raw_resources.dat");
Es ist auch möglich, den Build-Prozess anpassen, so dass die Datei landet nicht im Verzeichnis assets
im APK.
Ein Fortschritt Ansatz wird mit Erweiterungsfunktion
fun Context.getRawInput(@RawRes resourceId: Int): InputStream {
return resources.openRawResource(resourceId)
}
Eine weitere interessante Sache ist Erweiterungsfunktion Verwendung, die in Verschließbare Rahmen definiert ist
Zum Beispiel können Sie mit Eingabestrom in eleganter Art und Weise arbeiten kann, ohne Umgang mit Ausnahmen und Speichermanagement
fun Context.readRaw(@RawRes resourceId: Int): String {
return resources.openRawResource(resourceId).bufferedReader(Charsets.UTF_8).use { it.readText() }
}
Es gibt einen großen Unterschied zwischen der Programmierung für androi d und J2ME – Janusz
Es ist lustig, einen solchen Kommentar zu einer Frage über etwas zu lesen, das auf Android und J2ME identisch funktioniert. Siehe meine Antwort. – 0xF