java文件IO操

来源:互联网 发布:小众软件网 编辑:程序博客网 时间:2024/06/05 04:34


java文件IO操作------实现对文件的读取与写入


一、File类:

1.定义File对象:

File file = 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)File dir = new File("path");

(2)Stirng[] s = dir.list();     //获取到直接子目录下的文件或目录的名称 

(3)File[] files = dir.listFiles();  //获取到直接子目录下的文件或目录的绝对路径

(4)使用Foreach遍历上述集合即可得到直接子目录下的文件

(5)要遍历到直接子目录的目录,进行递归调用即可


4.FileReader/Writer实现对文件的读写操作:

1.定义FileReader/Writer对象:
FileReaderfr = 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.定义文件输入输出流对象:
FileInputStreamin = new FileInputStream((File)file1);
FileOutputStreamout  = 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.定义文件输入输出流对象:
BufferedInputStreambis = new BufferedInputStream(new FileInputStream(file1));

BufferedOutputStreambos = 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.定义文件输入输出流对象:
DataInputStreamdis = new DataInputStream( new FileInputStream(file1) );
DataOutputStreamdos = new DataOutputStream( new FileOutputStream(file2));

2.读写操作:

(1)dis.readInt();//可以方便地对各种基本型数据的读取

(2)dos.writeInt((int)c)//写也是一样,int/char/double/都阔以

(3)dis/dos.close();


五、字符流:

<一>、InputStreamReader/OutputStreamWriter()字符流:

1.定义文件输入输出流对象:
FileInputStreamin = 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.定义文件输入输出流对象:
BufferedReaderbr = new BufferedReader(
new InputStreamReader(
new FileInputStream(file1)));

BufferedWriter bw = new BufferedWriter(
new OutputStreamWriter(
new FileOutputStream(file2));
2.读写操作:
(1)Stringline = br.readLine()//这个可以读一行
(2)bw.write(line);//写一行
(3)PW方法:
PrintWriterpw = new PrintWriter(file2);//构造方法比bw简单了许多
(4)pw的打印输出方法:
pw.println(line);
(5)bw.flush();br/bw/pw.close();













0 0