[Android-Studio][Java] - Exceptions i IO
Tjenare.
Har ännu ett litet problem i min app som jag håller på att bygga på. Jag försöker skriva till en txt fil för jag vill lagra data från användar-input, jag vill inte använda databas för detta.
Vad jag försöker skriva är en sträng, helt enkelt texten "something".
Okej såhär är min kod just nu:
FileWork (all funktionalitet till att skriva till filer):
package example.lunchlist;
import android.util.Log;
import java.io.*;
import java.util.Date;
/**
* Created by fredrik on 2013-05-22.
*/
public class FileWork
{
boolean Added = false;
boolean State = false;
public void Write(MyObject objectToWrite)
{
try
{
Writer writer = null;
try {
writer = new BufferedWriter(new OutputStreamWriter(
new FileOutputStream("test.txt"), "utf-8"));
writer.write(objectToWrite.toString());
} catch (IOException ex){
// report
} finally {
try {writer.close();} catch (Exception ex) { Log.i("Error 0x4", "Error printing to file " + ex.getMessage());}
}
}
catch (Exception e)
{
Log.i("Error: ", e.toString());
}
}
public boolean Search(MyObject objectToWrite)
{
try
{
BufferedReader bf = new BufferedReader(new FileReader("test.txt"));
int lineCount = 0;
String line;
Log.i("0x5 Searching started", objectToWrite.toString() + " inside test.txt");
while (( line = bf.readLine()) != null)
{
lineCount++;
int indexFound = line.indexOf(objectToWrite.toString());
if (indexFound > -1) {
State = true;
}
else{
State = false;
}
}
bf.close();
Log.i("System: 0x5", "Successfully searched");
}
catch (Exception e) {
Log.i("0x4", e.getMessage());
State = false;
}
return State;
}
}
Main:
try{
Log.i("Started", "Trying to write to file test.txt");
if(file.Search(newObject)){
Log.i("System: 0x0", "Search: Successfully found new object, cannot add new instance of it");
}
else{
file.Write(newObject);
Log.i("0x0", "Successfully wrote new object to file");
}
}
catch(Exception e)
{
Log.i("0x4", "Write-failure to file out.txt, error described as: " + e.getMessage());
}
newObject:
@Override
public String toString()
{
return "something";
}
Exceptions:
LÖST
05-22 15:13:32.890: I/0x4(17715):
/test.txt: open failed: ENOENT (No such file or directory)
LÖST
05-22 15:13:32.890: I/Error 0x4(17715):
Error printing to file null
LÖST
05-22 15:22:01.555: I/0x4(22801):
/test.txt: open failed: EROFS (Read-only file system)
Ingen aning
05-22 15:25:41.560: I/0x4(30398):
/storage/sdcard0/test/test.txt: open failed: EACCES (Permission denied)
0x4 betyder bara att det sker i min FileWork klass, det är för filtrering i Logcat bara.
Frågan är alltså: Hur får jag tillåtelse att skriva och läsa från filen?