Java IO的个人学习笔记(1)

1.File类
在整个io包中,唯一与文件有关的就是File类.File类的构造方法:

public File(String pathname)-->实例化File类时,必须设置好路径

可以发现,如果实例化一个File类,必须传入一个文件路径:如File file=new File("d:\\test.txt");
这里要说一下,不同才做系统的路径的分隔符是不一样的,比如:
a.windows中的使用反斜杠表示目录的分隔符: " \"
b.linux中使用正斜杠表示目录的分隔符 :" /"
因为要保证代码的可移植性,这里我们提供一种方法:使用"d:"+File.separator+"test.txt".

File类提供了许多方法操作文件。


boolean equals(Object obj)   //将指定对象与调用函数的对象进行比较

boolean exists()                      //测试文件是否存在
String getAbsolutePath()       //返回此对象表示的文件的绝对路径名
String getName()                  //返回此对象表示的文件的名称
String getParent()                 //返回此File对象的路径名的上一级,如果路径名没有上一级,则返回null
boolean isAbsolute()            //测试此File对象表示的文件是否是绝对路径名
boolean isDirectory()           //测试此File对象表示的文件是否是目录
boolean isFile()                    //测试此File对象表示的文件是否是普通文件
boolean delete()                  //删除此对象指定的文件
boolean createNewFile()     //创建空文件
boolean mkdir()                  //创建由该File对象表示的目录
boolean mkdirs()                //创建包括父目录的目录
File[] listFiles()                     //列出指定目录的全部内容,会列出路径,返回一个File对象数组

String[] list()   //列出指定目录的全部内容,只是列出了名称,返回一个字符串数组


2.RandomAccessFile类

File类只是针对对文件本身进行操作,而RandomAccessFile则对文件内容进行操作,此类可以随机读取一个文件中指定位置的数据。常用方法有:

(1)、public  RandomAccessFile(File file, String mode)throws FileNotFoundException  构造方法  接收File类的对象,指定操作路径,但是在设置时需要设置模式:"r": 只读、"w": 只写、"rw": 读写。
(2)、public RandomAccessFile(String name, String mode) throws FileNotFoundException 构造方法 不再使用File类对象表示文件,而是直接输入了一个固定的文件路径。
(3)、public void close() throws IOException   关闭操作
(4)、public int read(byte[] b) throws IOException 将内容读取到一个byte数组之中
(5)、public final byte readByte()  throws IOException 读取一个字节
(6)、public final int readInt()  throws IOException从文件中读取整型数据。
(7)、public void seek(long pos) throws IOException 设置读指针的位置。
(8)、public final void writeBytes(String s) throws IOException 将一个字符串写入到文件之中,按字节的方式处理。
(9)、public final void writeInt(int v) throws IOException 将一个int型数据写入文件,长度为4位。
(10)、public int skipBytes(int n) throws IOException 指针跳过多少个字节。
实例化的时候需要传入一天File对象,告诉程序要操作那个目录下的文件,有三种模式:
r:只读模式
w:只写模式
rw:读写模式,如果使用该模式,要写入的文件不存在。系统则会自动创建。
使用RandomAccessFile类写入数据:
package org.zzy.IOTest;

import java.io.File;
import java.io.RandomAccessFile;

public class RandomAccessDemo {

	public static void main(String[] args)throws Exception {
		// TODO Auto-generated method stub
		File f=new File("d:"+File.separator+"test.txt");
		RandomAccessFile rad=new RandomAccessFile(f,"rw");
		String name=null;
		int age=0;
		name="zhangsan";
		age=20;
		rad.writeBytes(name);
		rad.writeInt(age);
		name="lisi    ";
		age=25;
		rad.writeBytes(name);
		rad.writeInt(age);
		name="wangwu  ";
		age=30;
		rad.writeBytes(name);
		rad.writeInt(age);
		rad.close();
	}
}
这样文件就写进D盘目录下了,因为采用rw的模式,所以文件会自动创建。
下面我们用RandomAccessFile读取数据,具体代码如下:
import java.io.File;
import java.io.RandomAccessFile;

public class RandomAcessDemo2 {

	public static void main(String[] args) throws Exception{
		// TODO Auto-generated method stub
		File f=new File("d:"+File.separator+"test.txt"); 
		RandomAccessFile raf=new RandomAccessFile(f,"r");
		String name=null;
		int age=0;
		byte[] b=new byte[8];
		raf.skipBytes(12);
		for( int i=0;i<b.length;i++) {
			b[i]=raf.readByte();
		}
		name=new String(b);
		age=raf.readInt();	
		System.out.println("第二个人的姓名:"+name+"第二个人的年龄:"+age);
		raf.seek(0);
		b=new byte[8];
		for(int i=0;i<b.length;i++){
			b[i]=raf.readByte();
		}
		name=new String(b);
		age=raf.readInt();
		System.out.println("第一个人的姓名:"+name+"第一个人的年龄"+age);
		raf.skipBytes(12);
		b=new byte[8];
		for(int i=0;i<b.length;i++) {
			b[i]=raf.readByte();
		}
		name=new String(b);
		age=raf.readInt();
		System.out.println("第三个人的姓名:"+name+"第三个人的年龄"+age);
	}
}
可以发现,程序中可以随机跳过12位读取内容,也可以回到开始点重新读取。
未完待续





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值