java - 一些字符保存到文本文件中而不是生成的随机数

标签 java android file random

我正在构建一个移动应用程序,我必须将生成的随机数保存到 .txt 文件中。下面你可以看到我的代码。当我执行它时,.txt 文件存储一些字符而不是数字。我对这个文件概念很陌生。请帮忙。

public class MainActivity extends Activity {

    int[] arr = new int[100];

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // TODO Auto-generated method stub  
        try {
            File sdcard = Environment.getExternalStorageDirectory();
            File directory = new File(sdcard.getAbsolutePath() + "/MyDirectory");
            directory.mkdirs();
            File file = new File(directory, "textfile.txt");
            FileOutputStream fou = new FileOutputStream(file);
            OutputStreamWriter osw = new OutputStreamWriter(fou);
            try {
                for (int i = 0; i < 10; i++) {
                    Random r = new Random();
                    int c = r.nextInt(100);
                    arr[i] = c;
                    osw.write(c);
                }
                osw.close();
                Toast.makeText(getBaseContext(), "Data saved", Toast.LENGTH_LONG).show();
            } catch (IOException e) {
                e.printStackTrace();
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }


    }

}  

//arr[i] 用于我项目的后续部分。

如果有人帮助我并帮助我纠正我的错误,我会很高兴。

最佳答案

Writers 使用 write(int c) 从索引为 c 的 Unicode 表中写入字符。

您感兴趣的是编写代表您的数字的字符串,例如“123”,因此首先将其转换为字符串,然后使用 write(String s) 方法。

所以而不是

osw.write(c); 

使用

osw.write(String.valueOf(c));

或者你甚至可以用 PrintWriter 包装你的 writer,它具有 printprintln 等方法(类似于 System.out. println),所以你可以只使用

yourPrintWriter.print(c);

编辑:

如果您需要在新行中打印每个数字,那么您需要在其行分隔符之后打印。尝试添加

osw.write(System.lineSeparator());

打印每个数字后,或使用 PrintWriter 中的 println 方法。

关于java - 一些字符保存到文本文件中而不是生成的随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23403837/

相关文章:

android - GLSurfaceView onResume - 选项卡式应用程序创建上下文

performance - 多线程时现代操作系统上的目录漫游器变慢?

VB.Net:按行搜索Word文档

java - JSF 中的用户表单例份验证

java - JAXB 2.x 和 Ant

android - 如何将 Gradle 任务添加到 Android 构建

java - 为什么 Dagger 注入(inject)具体类?

linux - 如何在没有 ./的情况下在命令行中运行/执行文件

java - 如何获得 Joda DateTime 时区的冒号?

java - 想要删除子对象,但不删除子对象对其他对象的引用