我有这段代码来生成文件,
et_nombre = (EditText) findViewById(R.id.txt_nombre); // name file automatic
et_tienda = (EditText) findViewById(R.id.txt_tienda); // Store Out
et_destino = (EditText) findViewById(R.id.etDestino); // Store In
et_contenido = (EditText) findViewById(R.id.txt_contenido); // Barcode
android.text.format.DateFormat.format("yyyy-MM-dd hh:mm:ss a", new java.util.Date());
long msTime = System.currentTimeMillis();
Date curDateTime = new Date(msTime);
String t_origen=et_tienda.getText().toString();
String t_destino=et_destino.getText().toString();
et_nombre.setText("Traspaso_"+curDateTime+" "+msTime);
public void Guardar(View view) {
String nombre = et_nombre.getText().toString(); // EditText nombre fichero generado solo escritura desabilitada
String letra_T = "T"; // valor fijo para cada línea del fichero
String tienda = et_tienda.getText().toString(); // tienda origen se repite en cada línea
int tienda_num = Integer.parseInt(tienda); // tienda origen formato int
String tienda_destino = et_destino.getText().toString(); // tienda destino se repite en cada línea
int tienda_des = Integer.parseInt(tienda_destino); // tienda destino formato int
String contenidos = et_contenido.getText().toString(); // código de barras escaneado uno por línea
String prueba = String.format("%6d" , tienda_num ); // tienda origen con formato definido
String destino = String.format("%6d" , tienda_des ); // tienda destino con formato definido
String barras = String.format("%-25d" , new BigInteger(contenidos)); // código de barras con formato definido
String unidad = "0000000001"; // unidad para cada lectura
String contenido = letra_T + prueba +destino +barras +unidad; // línea correcta
try {
File tarjetaSD = Environment.getExternalStorageDirectory();
Toast.makeText(this, tarjetaSD.getPath(), Toast.LENGTH_SHORT).show();
File rutaArchivo = new File(tarjetaSD.getPath(), nombre);
OutputStreamWriter crearArchivo =new OutputStreamWriter(new FileOutputStream(rutaArchivo));
//OutputStreamWriter crearArchivo = new OutputStreamWriter(openFileOutput(nombre, Activity.MODE_PRIVATE));
crearArchivo.write(contenido);
crearArchivo.flush();
crearArchivo.close();
Toast.makeText(this, "Guardado correctamente", Toast.LENGTH_SHORT).show();
et_nombre.setText("");
et_contenido.setText("");
et_tienda.setText("");
et_destino.setText("");
} catch (IOException e) {
Toast.makeText(this, "No se pudo guardar", Toast.LENGTH_SHORT).show();
}
}
EditText et_contenido; //reading barcode
EditText et_tienda; //Store out
EditText et_Destino; //Store In
Resulting file is correct example
txt_contenido : 99123456789
txt_tienda : 12
etDestino : 25
letra_T = "T" fixed value.
unidad = "0000000001" fixed value.
T 12 2599123456789 0000000001
但是我想连续读取几个条形码,并将它们保存在同一文件中,并通过仅更改条形码的值来遵守格式。 哪个选项是正确的,创建一个数组和一个for或将edittext更改为多行并循环 感谢您的帮助
答案 0 :(得分:0)
创建一个数组,经过多次读取后,将其写入文件比打开文件并为每次条形码读取写入该文件具有更高的性能,但是有时您必须将数组的内容刷新到文件,您将需要一个触发器,一个计时器或其他任何可以理解在正确的时间写入文件的东西,这就是“挑战”。 因此,每次读取条形码时都更容易写入文件,但是根据读取条形码的数量,每次写入/关闭文件时可能会遇到性能问题。 您也可以将条形码连接成一个字符串,并在所有读取之后将此字符串写入文件中。