Java 为什么我能';不读取只读文件?
我有一个读取文件的方法:Java 为什么我能';不读取只读文件?,java,android,android-activity,Java,Android,Android Activity,我有一个读取文件的方法: /* Read file's content */ private ArrayList<String> readFromFile() { File file = new File("jokesBody1.bjk"); ArrayList<String> list = new ArrayList<String>(); try { file.createNe
/* Read file's content */
private ArrayList<String> readFromFile() {
File file = new File("jokesBody1.bjk");
ArrayList<String> list = new ArrayList<String>();
try {
file.createNewFile();
ObjectInputStream ois = new ObjectInputStream( new FileInputStream( file ) );
try {
list = (ArrayList)ois.readObject();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
ois.close();
} catch (IOException e) {
Log.e("log activity", "Can not read file: " + e.toString());
}
return list;
}
甚至,如果文件是只读的,为什么我不能读取它?我真的不明白发生了什么事。我在我的舱单上有这样的预告:
有人能给我一个线索吗?我知道我错过了一些小东西,但我真的看不出来
以下是我如何编写文件:
/* Write content to a file */
private void writeToFile(ArrayList<String> list, Context cont) {
File file = new File("jokesBody1.bjk");
FileOutputStream fos;
if(list != null){
try {
fos = cont.openFileOutput("jokesBody1.bjk", Context.MODE_PRIVATE);
ObjectOutputStream out = new ObjectOutputStream(fos);
out.writeObject(list);
out.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}else{
try {
file.createNewFile();
fos = openFileOutput("jokesBody1.bjk",Context.MODE_PRIVATE);
ObjectOutputStream out = new ObjectOutputStream(fos);
out.writeObject("");
out.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
/*将内容写入文件*/
私有void writeToFile(ArrayList列表,上下文控制){
File File=新文件(“jokesBody1.bjk”);
文件输出流;
如果(列表!=null){
试试{
fos=cont.openFileOutput(“jokesBody1.bjk”,Context.MODE_PRIVATE);
ObjectOutputStream out=新的ObjectOutputStream(fos);
out.writeObject(列表);
out.close();
}catch(filenotfounde异常){
e、 printStackTrace();
}捕获(IOE异常){
e、 printStackTrace();
}
}否则{
试一试{
createNewFile();
fos=openFileOutput(“jokesBody1.bjk”,Context.MODE_PRIVATE);
ObjectOutputStream out=新的ObjectOutputStream(fos);
out.writeObject(“”);
out.close();
}catch(filenotfounde异常){
e、 printStackTrace();
}捕获(IOE异常){
e、 printStackTrace();
}
}
}
您正在尝试创建该文件,但对于只读文件,该操作当然会失败
删除此行:
file.createNewFile();
这通常用于在写入之前创建新的空文件。如果您只想读取一个已经存在的文件,那么您真的不需要它
编辑:
只要用这个:
ObjectInputStream ois = new ObjectInputStream( context.openFileInput("jokesBody1.bjk"));
当然,还必须向函数传递上下文
您只能使用带有完整路径的文件
。要访问私有文件,请使用上下文,就像保存文件一样
您的全部功能应如下所示:
private ArrayList<String> readFromFile(Context context) {
ArrayList<String> list = new ArrayList<String>();
try {
ObjectInputStream ois = new ObjectInputStream( context.openFileInput("jokesBody1.bjk"));
try {
list = (ArrayList)ois.readObject();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
ois.close();
} catch (IOException e) {
Log.e("log activity", "Can not read file: " + e.toString());
}
return list;
}
private ArrayList readFromFile(上下文){
ArrayList=新建ArrayList();
试一试{
ObjectInputStream ois=新的ObjectInputStream(context.openFileInput(“jokesBody1.bjk”);
试一试{
list=(ArrayList)ois.readObject();
}catch(classnotfounde异常){
e、 printStackTrace();
}
ois.close();
}捕获(IOE异常){
Log.e(“日志活动”,“无法读取文件:+e.toString());
}
退货清单;
}
您正在尝试创建该文件,但对于只读文件,该操作当然会失败
删除此行:
file.createNewFile();
这通常用于在写入之前创建新的空文件。如果您只想读取一个已经存在的文件,那么您真的不需要它
编辑:
只要用这个:
ObjectInputStream ois = new ObjectInputStream( context.openFileInput("jokesBody1.bjk"));
当然,还必须向函数传递上下文
您只能使用带有完整路径的文件
。要访问私有文件,请使用上下文,就像保存文件一样
您的全部功能应如下所示:
private ArrayList<String> readFromFile(Context context) {
ArrayList<String> list = new ArrayList<String>();
try {
ObjectInputStream ois = new ObjectInputStream( context.openFileInput("jokesBody1.bjk"));
try {
list = (ArrayList)ois.readObject();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
ois.close();
} catch (IOException e) {
Log.e("log activity", "Can not read file: " + e.toString());
}
return list;
}
private ArrayList readFromFile(上下文){
ArrayList=新建ArrayList();
试一试{
ObjectInputStream ois=新的ObjectInputStream(context.openFileInput(“jokesBody1.bjk”);
试一试{
list=(ArrayList)ois.readObject();
}catch(classnotfounde异常){
e、 printStackTrace();
}
ois.close();
}捕获(IOE异常){
Log.e(“日志活动”,“无法读取文件:+e.toString());
}
退货清单;
}
您没有指定任何路径:
File file = new File("jokesBody1.bjk");
所以,你不是说应用程序在哪里查找文件
也许,你想在这里搜索
Environment.getExternalStorageDirectory()
您没有指定任何路径:
File file = new File("jokesBody1.bjk");
所以,你不是说应用程序在哪里查找文件
也许,你想在这里搜索
Environment.getExternalStorageDirectory()
你的档案在哪里?File File=新文件(“jokesBody1.bjk”);我看不到任何路径。写入文件时,您的
文件
变量完全无用。您的文件在哪里可能重复?File File=新文件(“jokesBody1.bjk”);我看不到任何路径。写入文件时,您的文件变量完全无用。可能重复02-16 06:22:22.486:E/log活动(1450):无法读取文件:java.io.FileNotFoundException:/jokesBody1.bjk:open失败:enoint(没有这样的文件或目录)
这是我得到的:(您的文件位于哪里?02-16 06:22:22.486:E/log活动(1450):无法读取文件:java.io.FileNotFoundException:/jokesBody1.bjk:open失败:enoint(没有这样的文件或目录)
这是我得到的信息:(您的文件位于哪里?