最近在Android的学习中,经常用到文件的IO操作,今天就简单的总结一下
首先是File类的概念
File类给我的感觉就是文件夹的管理,涉及文件的目录,长度和文件的读写权限等操作,不涉及文件的读写操作。可以联想下我们电脑的上的文件管理。一般要新建一个文件都是方法某个文件夹下的,搜索某个文件的的时候,一般都有路径,如G:\11game\11Game.exe。应此在读写文件前需要给文件定位。
如何操作呢?
想想平时,第一步,要新建一个文件夹,在某个目录下,java的代码中是这样写的
File file=new File(“文件的目录路径”);
file.mkdir();
有了目录以后,就可以创建文件了
定义文件的名称,记得要带后缀名
File file=new File(“文件的目录+文件的名称”);
file.createNewFile();
新建完成
如果直接不新建目录就执行上一步,就会抛出异常
这里主要路径的写法 一般在Window下 都是E://sime/ 这样的写法 反斜杠,在Android开发中都是斜杠,但是在Android中, File dir=Environment.getExternalStorageDirectory();方法来获路径这样最好。
然后在 File
file=new File(dir,”sime.txt”);
常用的方法有 exists(检查文件是否存在)和delete(删除文件)
在给文件准确的定位后,就可以对其进行读写操作了
读写之前别忘了加入读写权限咯
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>"
Java对文件的读写有两种,分别是字节流和字符流
字节流抽象类有字节输入流 InputStream和字节输出流OutputStream。
一般初学者会这样认为,Input输入就是写入,Output输出就是读取。但是现实正好相反
要从内存的角度来思考,流的操作都是在内存中操作的。(其实我也不是怎么理解--会用就行)
抽象类是不能实例化的,在实际的开发中我们用的都是其子类
字符流对应的是Reader类和Writer类(这个好像就符合常规逻辑了)
首先介绍的文件字节流的使用
如果需要以字节为单位去读取写入文件,就可以使这个,下面是构造方法
FileInputStream(String name);
FileInputStream(File file);
FileOutputStream(String name);
FileInputStream(File file);
//我都建议用第二中构造方法,这样代码更规范化
上代码
//文件字节输入流
private void FileInputStreamdome(File file)
{
try {
FileInputStream in=new FileInputStream(file);
int date=0;
String msg="";
while((date=in.read())!=-1)
{
msg+=(char)date;
}
in.close();
setTextView(msg);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//文件字节输出流
private void FileOutpurStreamdome(File file)
{
try {
FileOutputStream out=new FileOutputStream(file);
byte [] a="sime的测试".getBytes();
out.write(a,0,a.length);
out.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
乱码!!!!如何解决呢?
加上一句就好
private void FileInputStreamdome(File file)
{
try {
FileInputStream in=new FileInputStream(file);
InputStreamReader reader = new InputStreamReader (in,"UTF-8");
//这句,下面也做出相应的改动
int date=0;
String msg="";
while((date=reader.read())!=-1)
{
msg+=(char)date;
}
reader.close();
in.close();
setTextView(msg);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
文件字符流
运行结果如下,没有乱码
//文件字符输入流
private void FileReaderdome(File file)
{
try {
FileReader reader=new FileReader(file);
int date=0;
String msg="";
while ((date=reader.read())!=-1)
{
msg+=(char)date;
}
reader.close();
setTextView(msg);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//文件字符输出流
private void FileWritedome(File file)
{
try {
FileWriter writer=new FileWriter(file);
writer.write("我爱看银魂");
writer.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
最后本次在介绍 数据流这个在android读写二进制数据中常用
构造方法
DataInputStream
(InputStream in)数据输入流DataOutputStream(OutputStream
out)数据输出流,可见数据流要和文件字节流合用
上代码
//数据输入流
private void DataInputStreamdome(File file)
{
try {
FileInputStream in=new FileInputStream(file);
DataInputStream datain=new DataInputStream(in);
String msg=datain.readUTF();
datain.close();
in.close();
setTextView(msg);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//数据输出流
private void DataOutputStreamdome(File file)
{
try {
FileOutputStream out=new FileOutputStream(file);
DataOutputStream dateout=new DataOutputStream(out);
dateout.writeUTF("dota all star玩家");
dateout.close();
out.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
这次先到这里,IO操作太多,下次继续
- 大小: 11.6 KB
- 大小: 2.9 KB
- 大小: 7.1 KB
- 大小: 14.1 KB
分享到:
相关推荐
Android对文件的输入输出操作,IO操作
android的IO流读写文件操作示意程序
android 平台,文件存入手机或者SD卡,用到IO操作等技术。
Android的文件操作都是通过流的方式进行的,即IO。Android的文件操作跟Java是一样的,文件操作分为输入流(InputStream)和输出流(OutputStream),输入流用于获取文件数据,输出流用于存储文件。 详细介绍请参考...
android 下的文件读写操作源码,可供入门学习
彻底明白 Java 语言中的IO系统 彻底明白 Java 语言中的IO系统
Android的数据操作和特殊IO,希望对大家有所帮助、
操作步骤 打开Android Studio中的File下的Settings 选中Version Control下的Ignored Files 添加对应的需要忽略的文件 Ignore Unversioned Files下有三种忽略文件方式 Ignore specified file 忽略指定文件 ...
git.diff 文件,包含功能实现的所有提交。(Android 9.0) 0基础也能实现Android 控GPIO 包含:编写控制GPIO脚本,内置到系统,在rc中创建运行脚本的服务,通过系统属性触发,添加selinux权限。 自行编写Android...
前言 相信大家都知道知道,在AndroidOS中,提供了五中数据存储方式,分别是:ContentProvider存储、文件存储、SharedPreference...我们在学Java的时候都知道,Java中的IO操作来进行文件的保存和读取,Android是基于Linu
Android 10系统开始 进一步增强了平台功能,为外部存储设备上的应用和用户数据提供了更好的保护。作为这项工作的一部分,平台引入了进一步的改进,以简化向分区存储的转换,让用户更好地控制自己的文件,保护用户...
所以如果对Java的io文件操作比较熟悉的话,android的文件操作就是小菜一碟了。好了,话不多说,开始今天的正题吧。 先从一个小项目入门吧 首先是一个布局文件,这一点比较的简单,那就直接上代码吧。 <...
xml文件操作 public class XmlUtils { /** * 获取Document对象。根据xml文件的名字获取Document对象。 * * @param file * 要获取对象的xml文件全路径。 * @return 返回获取到的Document对象。 * @...
字节流提供了处理任何类型的IO操作的功能,但它不能直接处理Unicode字符,字符流就可以。 (2).字节流转换成字符流可以用InputStreamReader,OutputStreamWriter。 一般我们在使用的时候通常用字节流。 3. 文件读写的...
直接用于在android系统下运行的iozone可执行文件。使用方法: 1.将下载的iozone文件通过ADB拷贝到android平台的/data下. 2.进入/data下,执行iozone文件,如:./iozone -t 2 -s 3m -r 50k -F test1.txt test2.txt -...
Java 和Android 开发中文件流的操作
进行了Android的各种基础操作,包括Activity测试,文件读写,single Touch、MultiTouch、KeyListener、Acceleration(重力)检测等,开发初级必备。
下面通过本文给大家介绍Android文件存储数据方式。 1.文件存储数据使用了Java中的IO操作来进行文件的保存和读取,只不过Android在Context类中封装好了输入流和输出流的获取方法。 创建的存储文件保存在/data/data/...
14.2为Android开发虚拟驱动virtualio 14.3 Android集成C程序访问virtualio 14.4 Android通过HAL访问virtualio 14.4.1 virtualio HAL模块实现 14.4.2实现访问virtualio HAL模块JN 14.4.3在Framework层增加virtualio...