http://blog.csdn.net/Somnusxyb_许亚宾_http://blog.csdn.net/heima

来源:互联网 发布:淘宝贝高瞻幼儿园健达 编辑:程序博客网 时间:2024/05/22 17:02

一.io输入与输出..键盘对应i(输入),显示器对应o(输出)
 1.file 不是文件的内容,代表磁盘文件本身信息的类    ,file类定义了一些与平台无关的方法来操作文件
如:增删该
2.分隔符:Unix中(/)、Dos(/),java可以处理Unix和Dos的路径分隔符

如:下例;

 

 

import java.io.File;
import java.util.Date;


public class FileTest {

 public static void main(String[] args) {
  File f=new File("1.txt");
  //文件存在
  try {
   if (f.exists()) {
    f.delete();//删除
   }
   else {
    //穿件一个文件
    f.createNewFile();
   }
   
  } catch (Exception e) {
   e.printStackTrace();
  }
  //文件名
  System.out.println("Filename"+f.getName());
  //路径
  System.out.println("Filepath"+f.getPath());
  //绝对路径
  System.out.println(f.getAbsolutePath());
  //父路径..就是上一级的路径,如果没有返回null
  System.out.println(f.getParent());
  //文件是否存在
  System.out.println(f.exists()?"exit":"not exist");
  //文件是否可读
  System.out.println(f.canRead()?"read":"not read");
  //文件是否是目录
  System.out.println(f.isDirectory()?"directory":"not directory");
  //取出文件的修改时间。是long类型,打印的是长类型
  System.out.println(f.lastModified());
  //转换格式
  System.out.println(new Date(f.lastModified()) );
  

 }

}

 


二.RandomAccessFile类提供了许多文件访问方法,RandomAccessFile类支持“随机访问”方式,可以从任意一个位置开始读取文件...,指示器,可以跳到文件的任何一个位置,移到一个新的位置,,他就会从新的位置开始读取。。
在使用流的方式的时候,,必须安顺有序,一个字节一个字节的读取,,。。。随机读取,。可以跳转,

等长格式。。如:一条条的学生记录。。每条记录信息的内容长度一样。。。在信息中又可以分为若干字段。
 可以跳转到某个员工的姓名处,读取很方便

 

 

 

RandomAccessFile类仅限于操作文件。。不能访问其他的io设备,。。RandomAccessFile类有两种构造方法:
new RandomAccessFile(f,"r w");//读写方式
RandomAccessFile(f,"r");     //只读方式

 

如:

import java.io.RandomAccessFile;


public class RandomFileTest {

 public static void main(String[] args) {
//  //不能用字节的方式写入姓名,,,应该用字符的方式写入
//  Employee e1=new Employee("zhangsan", 238);
//  Employee e2=new Employee("lisi", 24);
//  Employee e3=new Employee("wangwu", 25);
//  
//  try {
//   RandomAccessFile ra=new RandomAccessFile("emploee.txt", "rw");
//   ra.write(e1.name.getBytes());
//   ra.writeInt(e1.age);//写入一个直接,如果年龄很大大于一个字节,
//                                            //内容就会丢失
//   ra.write(e2.name.getBytes());
//   ra.writeInt(e2.age);
//   
//   ra.write(e3.name.getBytes());
//   ra.writeInt(e3.age);
//   //关闭
//   ra.close();
//   
//   
//   byte[] buf=new byte[Employee.LEN];
//   String strName;
//   int len;
//   //读取的时候重新从创建
//   RandomAccessFile raf=new RandomAccessFile("emploee.txt","r");
//   raf.skipBytes(Employee.LEN+4);//读取12个字节
//      len=raf.read(buf);//读取文件中几个字节,最多可以读取八个字节
//   //转换为字符串
//   strName=new String(buf,0,len);
//   //trim(),去掉空格
//   System.out.println(strName.trim()+":"+raf.readInt());
//   
//   //seek绝对定位
//    raf.seek(0);
//    /*
//     * 读取第一个员工
//     */
//      len=raf.read(buf);
//      strName=new String(buf,0,len);
//   System.out.println(strName.trim()+":"+raf.readInt());
//   
//   //读取第三个员工
//   raf.skipBytes(Employee.LEN+4);
//    len=raf.read(buf);
//    strName=new String(buf,0,len);
//    System.out.println(strName.trim()+":"+raf.readInt());
//   raf.close();
//  } catch (Exception e) {
//   e.printStackTrace();
//  }
  

 


  //可以用中文
  Employee e1=new Employee("张三", 238);
  Employee e2=new Employee("lisi", 24);
  Employee e3=new Employee("wangwu", 25);
  
  try {
   RandomAccessFile ra=new RandomAccessFile("emploee.txt", "rw");
   ra.writeChars(e1.name);
   ra.writeInt(e1.age);//写入一个直接,如果年龄很大大于一个字节,
                                            //内容就会丢失
   ra.writeChars(e2.name);
   ra.writeInt(e2.age);
   
   ra.writeChars(e3.name);
   ra.writeInt(e3.age);
   //关闭
   ra.close();
   
   
   
   String strName="";
   
   //读取的时候重新从创建
   RandomAccessFile raf=new RandomAccessFile("emploee.txt","r");
   raf.skipBytes(Employee.LEN*2+4);//读取12个字节
   
   //trim(),去掉空格
   for(int i=0;i<Employee.LEN;i++)
   {
    strName+=raf.readChar();
   }
   System.out.println(strName.trim()+":"+raf.readInt());
   
   //seek绝对定位
    raf.seek(0);
   
     // 读取第一个员工
    

     strName="";
    for(int i=0;i<Employee.LEN;i++)
   {
    strName+=raf.readChar();
   }
   System.out.println(strName.trim()+":"+raf.readInt());
   
   //读取第三个员工
   raf.skipBytes(Employee.LEN*2+4);
    strName="";
   for(int i=0;i<Employee.LEN;i++)
   {
    strName+=raf.readChar();
   }
    System.out.println(strName.trim()+":"+raf.readInt());
   raf.close();
  } catch (Exception e) {
   e.printStackTrace();
  }

 }

}

原创粉丝点击