老实说,我已经搜索了很多这项任务,所以我最终尝试了各种方法,但在我结束这段代码之前没有任何工作。它完全适合我,所以我不想改变我的代码。
我需要的帮助是将这段代码放入开始读取文件的方式,但如果文件不存在则会创建一个新文件。
保存数据的代码:
String data = sharedData.getText().toString();
try {
fos = openFileOutput(FILENAME, MODE_PRIVATE);
fos.write(data.getBytes());
fos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
加载数据的代码:
FileInputStream fis = null;
String collected = null;
try {
fis = openFileInput(FILENAME);
byte[] dataArray = new byte [fis.available()];
while (fis.read(dataArray) != -1){
collected = new String(dataArray);
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
fis.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
所以如果我添加 保存数据代码 进入 捕获 加载数据部分然后我能实现我想要的吗?
答案 0 :(得分:5)
添加
File file = new File(FILENAME);
if(!file.exists())
{
file.createNewFile()
// write code for saving data to the file
}
以上
fis = openFileInput(FILENAME);
这将检查给定File
是否存在FILENAME
,如果它没有,则会创建一个新的。{/ p>
答案 1 :(得分:0)
如果您正在使用Android
,为什么不使用API's solution for saving files?
引用:
String filename = "myfile";
String string = "Hello world!";
FileOutputStream outputStream;
try {
outputStream = openFileOutput(filename, Context.MODE_PRIVATE);
outputStream.write(string.getBytes());
outputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
您应该阅读整篇文档,他们很好地解释了创建或访问文件的基本方法,您还可以查看different ways of storing data。
但关于你原来的问题:
所以如果我将保存数据代码添加到" FileNotFoundException" 抓住加载数据部分然后我可以实现我想要的吗?
是的,你可以实现它。
答案 2 :(得分:0)
试试这个:
public static void readData() throws IOException
{
File file = new File(path, filename);
if (!file.isFile() && !file.createNewFile()){
throw new IOException("Error creating new file: " + file.getAbsolutePath());
}
BufferedReader r = new BufferedReader(new FileReader(file));
try {
// ...
// read data
// ...
}finally{
r.close();
}
}