安卓上读写文件其实跟JAVA没什么区别,不过在安卓上读写文件还是要注意一些问题的,JAVA的流分为字节流和字符流,字节流读写中文会乱码,所有这里使用字符流读写文件。
名词解释:
sd卡即为你手机插入的扩展内存卡
手机ROM空间即为手机自带的存储空间
手机ROM空间可以理解为电脑的硬盘,而SD卡可以理解为电脑外插的U盘
详细介绍:
要读写文件,首先得开放权限,也就是在AndroidManifest.xml中加入
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
其次我建议建立一个文件辅助类FileHelp.java
代码如下:
import
java
.
io
.
BufferedWriter
;
import
java
.
io
.
File
;
import
java
.
io
.
FileReader
;
import
java
.
io
.
FileWriter
;
import
java
.
io
.
IOException
;
import
android
.
content
.
Context
;
import
android
.
os
.
Environment
;
public
class
FileHelp
{
private
Context
context
;
// 引用的上下文
private
boolean
hasSD
=
false
;
// 是否存在SD卡
private
String
SDPATH
;
// SD的路径
private
String
FILESPATH
;
// 当前程序的包路径
public
String
getFILESPATH
(
)
{
return
FILESPATH
;
}
public
String
getSDPATH
(
)
{
return
SDPATH
;
}
public
boolean
hasSD
(
)
{
return
hasSD
;
}
public
FileHelp
(
Context
context
)
{
this
.
context
=
context
;
hasSD
=
Environment
.
getExternalStorageState
(
)
.
equals
(
android
.
os
.
Environment
.
MEDIA_MOUNTED
)
;
SDPATH
=
Environment
.
getExternalStorageDirectory
(
)
.
getPath
(
)
;
FILESPATH
=
this
.
context
.
getFilesDir
(
)
.
getPath
(
)
;
}
// 在SD卡上创建文件
public
File
createSDFile
(
String
fileName
)
{
File
file
=
new
File
(
SDPATH
+
"//"
+
fileName
)
;
if
(
!
file
.
exists
(
)
)
{
try
{
file
.
createNewFile
(
)
;
}
catch
(
IOException
e
)
{
// TODO Auto-generated catch block
e
.
printStackTrace
(
)
;
}
}
return
file
;
}
// 从SD上删除指定文件
public
boolean
deleteSDFile
(
String
fileName
)
{
File
file
=
new
File
(
SDPATH
+
"//"
+
fileName
)
;
if
(
file
==
null
||
!
file
.
exists
(
)
||
file
.
isDirectory
(
)
)
return
false
;
return
file
.
delete
(
)
;
}
// 从SD卡上读取文本文件(使用的是字符流,避免中文乱码)
public
String
readSDFile
(
String
fileName
)
{
StringBuffer
sb
=
new
StringBuffer
(
)
;
File
file
=
new
File
(
SDPATH
+
"//"
+
fileName
)
;
if
(
file
.
exists
(
)
)
{
try
{
BufferedReader
br
=
new
BufferedReader
(
new
FileReader
(
file
)
)
;
String
line
;
while
(
(
line
=
br
.
readLine
(
)
)
!=
null
)
{
sb
.
append
(
line
)
;
}
br
.
close
(
)
;
}
catch
(
IOException
e
)
{
e
.
printStackTrace
(
)
;
}
return
sb
.
toString
(
)
;
}
return
""
;
}
// 向SD卡中写入文本文件(使用的是字符流,避免中文乱码)
public
boolean
writeSDFile
(
String
data
,
String
fileName
)
{
if
(
hasSD
)
{
File
file
=
new
File
(
SDPATH
+
"//"
+
fileName
)
;
try
{
BufferedWriter
buf
=
new
BufferedWriter
(
new
FileWriter
(
file
)
)
;
buf
.
write
(
data
)
;
buf
.
flush
(
)
;
buf
.
close
(
)
;
return
true
;
}
catch
(
IOException
e
)
{
e
.
printStackTrace
(
)
;
return
false
;
}
}
return
false
;
}
}
|
在需要用到的地方,实例化这个辅助类,并调用其中的方法完成文件的读写
注:该辅助类为了简便,只提供了SD卡文件创建,和读写删除操作,如果要对手机ROM空间读写的话,只要将方法体里的“SDPATH”换成“FILESPATH”即可