我正在构建一个移动应用程序,我必须将生成的随机数保存到 .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,它具有 print
、println
等方法(类似于 System.out. println
),所以你可以只使用
yourPrintWriter.print(c);
编辑:
如果您需要在新行中打印每个数字,那么您需要在其行分隔符之后打印。尝试添加
osw.write(System.lineSeparator());
打印每个数字后,或使用 PrintWriter
中的 println
方法。
关于java - 一些字符保存到文本文件中而不是生成的随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23403837/