Ich möchte eine Datei im internen Speicher speichern, indem ich den von EditText eingegebenen Text erhalte. Dann möchte ich, dass dieselbe Datei den eingegebenen Text in String-Form zurückgibt und in einem anderen String speichert, der später verwendet werden soll.
Hier ist der Code:
package com.omm.easybalancerecharge;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.telephony.TelephonyManager;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final EditText num = (EditText) findViewById(R.id.sNum);
Button ch = (Button) findViewById(R.id.rButton);
TelephonyManager operator = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
String opname = operator.getNetworkOperatorName();
TextView status = (TextView) findViewById(R.id.setStatus);
final EditText ID = (EditText) findViewById(R.id.IQID);
Button save = (Button) findViewById(R.id.sButton);
final String myID = ""; //When Reading The File Back, I Need To Store It In This String For Later Use
save.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//Get Text From EditText "ID" And Save It To Internal Memory
}
});
if (opname.contentEquals("zain SA")) {
status.setText("Your Network Is: " + opname);
} else {
status.setText("No Network");
}
ch.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//Read From The Saved File Here And Append It To String "myID"
String hash = Uri.encode("#");
Intent intent = new Intent(Intent.ACTION_CALL);
intent.setData(Uri.parse("tel:*141*" + /*Use The String With Data Retrieved Here*/ num.getText()
+ hash));
startActivity(intent);
}
});
}
Ich habe Kommentare beigefügt, um Ihnen bei der weiteren Analyse meiner Punkte zu helfen, wo die Operationen ausgeführt werden sollen / Variablen verwendet werden sollen.
Antworten:
Hoffe, das könnte für Sie nützlich sein.
Datei schreiben:
Datei lesen:
quelle
final
Block sein, wie in @SharkAlley AntwortFür diejenigen, die nach einer allgemeinen Strategie zum Lesen und Schreiben eines Strings in eine Datei suchen:
Holen Sie sich zuerst ein Dateiobjekt
Sie benötigen den Speicherpfad. Verwenden Sie für den internen Speicher:
Verwenden Sie für den externen Speicher (SD-Karte):
Dann erstellen Sie Ihr Dateiobjekt:
Schreiben Sie eine Zeichenfolge in die Datei
Oder mit Google Guava
Lesen Sie die Datei in eine Zeichenfolge
Oder wenn Sie Google Guava verwenden
Der Vollständigkeit halber werde ich erwähnen
Dies erfordert keine Bibliotheken, aber Benchmarks 50% - 400% langsamer als die anderen Optionen (in verschiedenen Tests auf meinem Nexus 5).
Anmerkungen
Für jede dieser Strategien werden Sie aufgefordert, eine IOException abzufangen.
Die Standard-Zeichenkodierung unter Android ist UTF-8.
Wenn Sie externen Speicher verwenden, müssen Sie Ihrem Manifest Folgendes hinzufügen:
oder
Schreibberechtigung impliziert Leseberechtigung, sodass Sie nicht beide benötigen.
quelle
new File(path + "/my-file-name.txt");
. Dies widerspricht viel dem Sinn vonFile
. Verwenden Sienew File(path, "my-file-name.txt");
stattdessen.File
gibt es aus einem Grund. In Ihrem Fall könnten Sie genauso gut überspringenFile
und einfach tunnew FileInputStream(path + "/my-file-name.txt");
, was ich nicht empfehle. (Was ist, wenn zum Beispielpath
ein Trailing enthalten ist/
?)quelle
context.getFilesDir()
. Sie können nur Vorkommen vonnew File(context.getFilesDir(), fileName)
durch einFile
Objekt oder eineString
übergebene Funktion anstelle von ersetzenfileName
.Nur ein bisschen Änderungen beim Lesen von Zeichenfolgen aus einer Dateimethode für mehr Leistung
quelle
Überprüfen Sie den folgenden Code.
Lesen aus einer Datei im Dateisystem.
Der folgende Code dient zum Schreiben der Datei in das interne Dateisystem.
Ich denke, das wird dir helfen.
quelle
Ich bin ein bisschen ein Anfänger und hatte Mühe, dies heute zum Laufen zu bringen.
Unten ist die Klasse, mit der ich gelandet bin. Es funktioniert, aber ich habe mich gefragt, wie unvollkommen meine Lösung ist. Wie auch immer, ich hatte gehofft, dass einige von euch erfahreneren Leuten bereit sein könnten, einen Blick auf meine IO-Klasse zu werfen und mir einige Tipps zu geben. Prost!
quelle
Das erste, was wir brauchen, sind die Berechtigungen in AndroidManifest.xml
In einer asyncTask Kotlin-Klasse behandeln wir die Erstellung der Datei
Wenn Sie Android über Api 23 verwenden, müssen Sie natürlich die Anforderung bearbeiten, um das Schreiben in den Gerätespeicher zu ermöglichen. Etwas wie das
Führen Sie dann in einer Aktivität den Aufruf aus.
quelle
Kotlin
quelle