java文件IO操
2015-11-14 17:13
411 查看
java文件IO操作------实现对文件的读取与写入
一、File类:
1.定义File对象:
Filefile = new File(“path”);
2.常用方法: //方法的作用显而易见,不再说明
(1)File.exists();(2)File.isDirectory();
(3)File.isFile();
(4)File.getName();
(5)File.getAbsolutePath();
File.getParent(); //嗯,这里还是要说明下,后者是取得直接父目录的路径
(6)File.mkdir();
File.mkdirs();
//好吧,这里也要说明下,后者是创建多级目录
(7)File.createNewFile();
(8)File.delete();
3.遍历目录:
(1)Filedir = new File("path");
(2)Stirng[]
s = dir.list(); //获取到直接子目录下的文件或目录的名称
(3)File[]
files = dir.listFiles(); //获取到直接子目录下的文件或目录的绝对路径
(4)使用Foreach遍历上述集合即可得到直接子目录下的文件
(5)要遍历到直接子目录的目录,进行递归调用即可
4.FileReader/Writer实现对文件的读写操作:
1.定义FileReader/Writer对象:FileReader
fr = new FileReader("path1");
//path也可以是File对象
FileWriter fw = new FileWriter("path2", true);
//true表示是向源文件追加内容,
2.读写操作:
(1)fr.read(buffer,
0,
lenght);
//将path1对应的文件内容读到buffer的[0:length]段中
(2)fw.write(buffer,0,length);
//将buffer中[0:length]段的内容写入到path2中(这个要仔细理解下)
(3)fw.flush();
(4)fr/fw.close();
二、使用RandomAccessFile类实现对文件的读写操作
1、定义RandomAccessFile对象:
RandomAccessFile Raf = new RandomAccessFile("File", "rw") ;2、常用方法:
(1)Raf.getFilePointer();//获取到指针位置(跟RandomAccessFile的机制有关,意思自己查)
(2)Raf.seek(index);
//调整指针位置到index处
(3)Raf.write("object");
//"object"可以为各种类型,字符/基本型/字节型都阔以
//但是每次只能写一个字节!只能写一个字节!!一个字节!!!
//多个字节咋办呢?比如int型有32位4个字节----分四次写呗!或者看下面:
(4)Raf.writeInt("(Int)object ");
//机智的人类早就解决了,封装了一些方法,不同类型找对应的方法即可
(5)Raf.read(buf);
//到读取啦啦啦,将File(就是定义Raf时的那个文件)中的内容读到buf中
//你说啥? buf是什么鬼? --- 哦,就是一个缓冲区,byte数组,自己定义!
//然后就可以对读到buf中的内容为所欲为了,你懂得!!!
(6)Raf.colse();
//最后关闭,否则可能发生Oracle自己也不知道原因的错
四、字节流:
<一>、FileInput/OutputStream字节流:
1.定义文件输入输出流对象:FileInputStream
in = new FileInputStream((File)file1);
FileOutputStream
out = new FileOutputStream((File)file2);
2.读写操作:
(1)in.read();
//单字节读取,返回的是文件内容对应的字节码(好像是???)
//返回值为-1说明读完了
(2)out.write((int)c);
//写入一个字节
(3)in.read(buf, 0, buf.length);
//批量读取,将file1中的所有内容读到buf中,buf是自己定义的字节数组
//方法的返回值是一个Int型的东东,是所读到的字节的个数
//返回值为-1时说明读完了
(4)out.wrtie(buf, 0, num);
//写操作,同前
(5)in.close();
//最后关闭,原因同前
(6)out.flush();
//刷新缓冲
(7)out.close();
//关闭
<二>、BufferedInput/OutputStream字节流:
1.定义文件输入输出流对象:BufferedInputStream
bis = new BufferedInputStream(new
FileInputStream(file1));
BufferedOutputStream
bos = new BufferedOutputStream(new FileOutputStream(file2));
//建立在FileIn/OutStream基础上
2.读写操作:
(1)bis.read();
//读取file1中的一个字节
(2)bos.wrtie((int)c);
//写一个字节c到file2中
(3)bos.flush();
bis.close(); bos.close();
//这几个别忘了
<三>、DataInput/OutputStream字节流:
1.定义文件输入输出流对象:DataInputStream
dis = new DataInputStream( new FileInputStream(file1) );
DataOutputStream
dos = new DataOutputStream(
new FileOutputStream(file2));
2.读写操作:
(1)dis.readInt();
//可以方便地对各种基本型数据的读取
(2)dos.writeInt((int)c)
//写也是一样,int/char/double/都阔以
(3)dis/dos.close();
五、字符流:
<一>、InputStreamReader/OutputStreamWriter()字符流:
1.定义文件输入输出流对象:FileInputStream
in = new FileInputStream(file1);
InputStreamReader
isr = new InputStreamReader(in,"gbk");
FileOutputStream out = new FileOutputStream(file2);
OutputStreamWriter
osw = new OutputStreamWriter(out,
"gbk"); //编码方式阔以自己选
2.读写操作:
(1)isr.read(); /
osw.write((int)c);
//单字符读写
(2)isr.read(buffer,
0, length); / osw.write(buffer,
0 , length);
//批量字符读写
(3)osw.flush();
osw.close();
isr.close();
<二>、BufferedReader/Writer字符流:
1.定义文件输入输出流对象:BufferedReader
br = new BufferedReader(
new InputStreamReader(
new FileInputStream(file1)));
BufferedWriter bw = new BufferedWriter(
new OutputStreamWriter(
new FileOutputStream(file2));
2.读写操作:
(1)String
line = br.readLine()
//这个可以读一行
(2)bw.write(line);
//写一行
(3)PW方法:
PrintWriter
pw = new PrintWriter(file2);
//构造方法比bw简单了许多
(4)pw的打印输出方法:
pw.println(line);
(5)bw.flush();
br/bw/pw.close();
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树
- [原创]java局域网聊天系统