有关I/O流的一些小程序

来源:互联网 发布:plc模拟仿真软件 编辑:程序博客网 时间:2024/06/05 19:56

今天贴一些有关于java I/O流的一些简单程序,方便大家理解和掌握,如果大家有什么不理解的,可以看我之前发过的有关I/O流的博客。

第一个(读写基本数据类型):

import java.io.*;public class NumberExample{     public static void main(String args[])   {        int a1=12,a2=1180;       long b=808080;       float x1=3.14F,x2=12.456F;       double d=1234.9876;       boolean boo1=true,boo2=false;       char c='我';       File f=new File("D://a.txt");   //创建文件。       try          {             FileOutputStream fos=new FileOutputStream("D://a.txt");         // 创建指向f文件输出流           DataOutputStream out_data=new DataOutputStream(fos);    // 创建指向fos 的数据输出流           out_data.writeInt(a1); // out_data将数据a1写入到文件           out_data.writeInt(a2);  // out_data将数据a2写入到文件           out_data.writeLong(b);      // out_data将数据b写入到文件           out_data.writeFloat(x1);     // out_data将数据x1写入到文件           out_data.writeFloat(x2);       // out_data将数据x2写入到文件           out_data.writeDouble(d);         // out_data将数据d写入到文件           out_data.writeBoolean(boo1);  // out_data将数据boo1写入到文件           out_data.writeBoolean(boo2);  // out_data将数据boo2写入到文件           out_data.writeChar(c); // out_data将数据c写入到文件         }        catch(IOException e){       System.out.print("wengjian");       }       try         {             FileInputStream fis=new FileInputStream("D:\\a.txt");//【代码11】         // 创建指向f文件输入流    DataInputStream in_data=new DataInputStream(fis); // 创建指向fis 的数据输入流            System.out.println(in_data.readInt());// in_data读取int整数            System.out.println(in_data.readInt()); // in_data读取int整数            System.out.println(in_data.readLong());// in_data读取long整数            System.out.println(in_data.readFloat());  // in_data读取float数            System.out.println(in_data.readFloat());// in_data读取float数            System.out.println(in_data.readDouble());// in_data读取double数            System.out.println(in_data.readBoolean());// in_data读取boolean数据            System.out.println(in_data.readBoolean());  // in_data读取boolean数据            System.out.print(in_data.readChar());// in_data读取char数据          }         catch(IOException e){System.out.print("duqu");}   }}

第二个(对象的读写):

import java.util.*;import java.io.*;public class ObjectExample{    public static void main(String args[ ])   {        Calendar calendar1=Calendar.getInstance();    // 创建一个日历对象      Calendar calendar2=Calendar.getInstance();    // 创建一个日历对象      calendar1.set(1949,9,1);         // 将日历时间设置为1949年10月1日,注意9表示十月      calendar2.set(2005,9,1);      try      {           File f=new File(“a.txt”);                 // 创建一个名字为"a.txt"的文件         FileOutputStream  fileOut=new FileOutputStream(f);  // 创建指向文件f的文件输出流         ObjectOutputStream objectOut=new ObjectOutputStream(fileOut);  // 创建指向文件fileOut的对象输出流         objectOut.writeObject(calendar1);      // objectOut写对象calendar1到文件         objectOut.writeObject(calendar2);       // objectOut写对象calendar2到文件         FileInputStream fileIn=new FileInputStream(f);         // 创建指向文件f的文件输入流         ObjectInputStream objectIn = new ObjectInputStream(fileIn);      // 创建指向文件fileIn 的对象输入流         Calendar  cloneCalendar1=(Calendar) objectIn.readObject();    // objectIn读出对象         Calendar  cloneCalendar2=(Calendar) objectIn.readObject();     // objectIn读出对象         cloneCalendar1.setTime(new Date());         cloneCalendar2.set(9999,9,1);         int 年=calendar1.get(Calendar.YEAR),            月=calendar1.get(Calendar.MONTH)+1,            日=calendar1.get(Calendar.DAY_OF_MONTH);         System.out.printf("\ncalendar1的日期:%d-%d-%d",年,月,日);         年=calendar2.get(Calendar.YEAR);         月=calendar2.get(Calendar.MONTH)+1;         日=calendar2.get(Calendar.DAY_OF_MONTH);         System.out.printf("\ncalendar2的日期:%d-%d-%d",年,月,日);         年=cloneCalendar1.get(Calendar.YEAR);         月=cloneCalendar1.get(Calendar.MONTH)+1;         日=cloneCalendar1.get(Calendar.DAY_OF_MONTH);         System.out.printf("\ncloneCalendar1的日期:%d-%d-%d",年,月,日);         年=cloneCalendar2.get(Calendar.YEAR);         月=cloneCalendar2.get(Calendar.MONTH)+1;         日=cloneCalendar2.get(Calendar.DAY_OF_MONTH);         System.out.printf("\ncloneCalendar2的日期:%d-%d-%d",年,月,日);            }      catch(Exception event)      {           System.out.println(event);      }   }}

第三个(针对RandomAccessFile):

import java.io.*;public class RandomExample{      public static void main(String args[])//你好!    {         File f=new File("hello.txt");       try{             RandomAccessFile random=new RandomAccessFile(f,”rw”);   // 创建指向文件f的random对象          random.seek(0); // 将random的读取位置定位在文件内容的开始处              long m=random.length();              while(m>0)              {                  m=m-1;                 random.seek(m);// 将random的读取位置定位在距文件开头m个字节                  int c=random.readByte();                  if(c<=255&&c>=0)                  {                     System.out.print((char)c);                  }                else                 {                    m=m-1;                   random.seek(m); // 将random的读取位置定位在距文件开头m个字节                    byte cc[]=new byte[2];                    random.readFully(cc);                    System.out.print(new String(cc));                  }             }           long  forthEndPosition=0;           int forth=1;           byte n=-1;              while((random.read())!=-1&&(forth<=4))       // random读取一个字节的数据                  { if(n=='\n')                      {                         forthEndPosition=random.getFilePointer();                        forth++;                      }                  }              random.seek(m); // 将random的读取位置定位在文件内容的末尾              long endPosition=random.getFilePointer(); // 获取当前random的读取位置              long mark=endPosition;              int j=1;              while((mark>=0)&&(j<=6))                    {                      mark--;                     random.seek(mark);                     n=random.readByte();                     if(n=='\n')                      {                          endPosition=random.getFilePointer();                         j++;                      }                  }              random.seek(forthEndPosition);// 将random的读取位置定位在距文件开头forthEndPosition个字节处              long startPoint=random.getFilePointer();              while(startPoint<endPosition-1)                   {                     n=random.readByte();                     System.out.print((char)n);                     startPoint=random.getFilePointer();                   }            random.close();       }       catch(IOException ee){}    }}


有些人可能不太熟悉RandomAccessFile类,这是一个随机访问文件类,这个类不属于流,它具有随机读写文件的功能,能够从文件的任意位置开始执行读写操作,通过API大家可以查找到这个类中的一些方法,例如,getFilePointer():返回当前读写指针所处的位置

seek(long pos):设定读写指针的位置,与文件开头相隔pos个字节数

length():返回文件包含的字节数

该类的构造函数有两个,一个是RandomAccessFile(File f,String mode);

另一个是RandomAccessFile(String name,String mode)//参数name是被访问的文件的路径。

mode只可以选值"r","rw",“r”表示程序仅仅是读文件,“rw”表示程序需要同时读写文件。此时要注意的是,RandomAccessFile类不支持只写文件的模式,因此把mode设置为"w"是非法的。

0 0
原创粉丝点击