Android文件写/读

时间:2014-09-11 14:33:22

标签: android file

当我在TextField中输入一个数字时,它会显示一些字母和数字,例如我会输入100,它会给我一个字母" d"我怎样才能解决这个问题 ?我有这个代码。

btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            int takeMoney = Integer.parseInt(txtEdit.getText().toString());
            String filename = "moneySavings.txt";
            int asd = takeMoney;
            FileOutputStream outputStream;

            try {
                outputStream = openFileOutput(filename, Context.MODE_PRIVATE);
                outputStream.write(asd);
                outputStream.close();
                savings.setText("File Created !");
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    });

    btn2.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            FileInputStream fis;
            final StringBuffer storedString = new StringBuffer();

            try {
                fis = openFileInput("moneySavings.txt");
                DataInputStream dataIO = new DataInputStream(fis);
                String strLine = null;

                if((strLine = dataIO.readLine()) != null) {
                    storedString.append(strLine);
                    savings.setText(strLine);
                }
                dataIO.close();
                fis.close();
            }
            catch  (Exception e) {
                e.printStackTrace();
            }
        }
    });

解释我是什么导致了这个问题,我该如何解决它...谢谢:)

2 个答案:

答案 0 :(得分:0)

100是d的ASCII value。您的字符串值的类型已转换为OutputStream处的ASCII值。

您无法直接在OutputStream中编写字符串。 尝试:

outputStream.write(txtEdit.getText().toString().getBytes());

要将输入限制为数字,您可以指定键盘。请参阅TextFields documentation

Ex 1:

<EditText
    android:id="@+id/numberInput"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:hint="@string/number_hint"
    android:inputType="number" />

Ex 2 - 电话拨号键盘:

<EditText
    android:id="@+id/numberInput"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:hint="@string/number_hint"
    android:inputType="phone" />

答案 1 :(得分:0)

OutputStream.write(int)正在将int写为字节,因此,如果您写.write(100),稍后您将其视为string,那么您将获得d 100d的ASCII代码。如果您尝试101,则会e

如果您想将100保存为"100",请尝试: How to write Strings to an OutputStream