java的文件IO编程知识总结

来源:互联网 发布:淘宝买烟怎么搜索 编辑:程序博客网 时间:2024/04/27 17:08


      1FileIO包中唯一代表磁盘文件本身的对象。定义了一系列与平台无关的方法来操作文件。能够完成创建,删除,重命名文件,判断文件的读写权限及文件是否存在,设置和查询文件的最近修改时间等。

File luo=new FileC:\\Users\\Administrator\\workspace\\test.txt;


      2RandomAccessFile类支持“随机访问”文件。访问文件不希望从头到尾的读取,希望像数据库一样访问一个文本文件。这是最好的选择。(写入,读出,移动读写指针,跳过指定个数位数等)

访问仅限于文件,不可以操作其他IO设备,如网络,内纯映像等。


     3、流类建立在四个抽象类之上InputStreamOutputStreamReaderWriter

一般都是通过File类的对象去初始化。

        InputStreamOutputStream被设计为字节流类。(字节或者二进制对象)

         ReaderWriter被设计为字符流类。(处理字符或者字符串)

字节流具体子类:FileInputStream文件输入流  FileOutputStream文件输出流

         字符数据要先使用string.getBytes()转化为字节数据才可以进行读取和写入。

字符流具体子类: FileReader文件输入流  FileWriter文件输出流

         可以直接实现对字符的读取和写入。

    4、管道流

      管道流主要用于两个线程间的通信,也分为字节流(PipeInputStreamPipeOutputStream)与字符流(PipeReaderPipeWriter)两种。

两个对象必须进行连接而产生一个通信管道。一个写一个读,实现两个线程之间的通信。

PipeInputStreamin=new PipeInputStream;

PipeOutputStreamout=new PipeOutputStream();

Out.connect(in);   //将两个管道进行连接。

后面就可以实现读写了。

     5ByteArrayInputStreamByteArrayOutputStream对字节数组进行处理。

字符串要先转化为字节数组。Byte[] src=”abcdefghijk”.getBytes();

     6system.insystem.out分别为InputStreamOutputStream的子类的流对象,属于字节流。显示屏和键盘。


    7、打印流(<>标识可选的参数)

PrintStream

供了一系列的printprintln方法,可以实现将基本数据类型的格式转化为字符串输出。

PrintStreamoutputstream Out<booleanautoflush>,<string encoding>),

对应的还有PrintWriter

     PrintWriter(OutputStream,<Boolean>)

     PrintWriter(writer<,Boolean>)

使用system.out初始化就输出到显示器上。

       PrintWriterout=New PrintWritersystem.out

使用FileWriter对象初始化就输出到文件中。

    File f=new File(“c:\\luo.txt”);

    PrintWriter out=New PrintWriter(newFileWriter(f));


8DataInputStreamDataOutputStream提供了与平台无关的数据操作。按固定的格式输出和输入。可以得到java各种基本数据类型字符串。方便处理。

DataInputStream Out=new DataInputStream(newFileOutputStream(luo));

   out.writeDouble(prices[i]);

   out.writeChar('\t');

   // 写入数目

   out.writeInt(units[i]);

   out.writeChar('\t');

   // 写入产品名称,行尾加入换行符

   out.writeChars(descs[i]);

   out.writeChar('\n');

数据再按照这个格式去读,便可以实现对数据的存储和处理。输出结果:


      9、合并流       

FileInputStream in1=new FileInputStream(new File(“c:\\luo.txt”));

FileInputStream in2=new FileInputStream(new File(“c:\\wei.txt”));

 

FileOutputStream out=newFileOutputStream(new File(“c:\\luowei.txt”));

 

SequenceInputStream s=new SequenceInputStream(in1,in2);//合为一个输入流

      Int c;

  While((c=s.read())!=-1)

         Out.write(c);   //合并两个输入流并输出。


      10、字节流与字符流的转换

InputStreamReaderOutputStreamWriter用于字节流与字符流之间的转换。

InputStreamReader:将一个字节流中的字节解码为字符。

OutputStreamWriter:将写入的字符编码成字节后写入字节流。

但是为了避免频繁地转换,不直接使用这两个类,而是使用BufferWriterBufferRead来包装。

BufferWriter out=new BufferWriter(new OutputStreamWriter(system.out))

BufferRead in =new BufferRead(newInputStreamReader(system.in))

如前所述,system.outsystem.in都是字节流。

String str=in.readLine();    //就直接可以读出一个字符串。

 

     11、对象序列化

就是将对象转化为二进制数据流的一种实现,可以方便实现对象的传输和保存。

ObjectInputStreamObjectOutputStream用于存储和读取对象输入输出的流类。

但是要求读写或者存储的对象必须实现Serializable接口。此接口没有实现任何方法,仅仅是被用作一种标记,以被编译器做特殊处理。

对象的存储:

File f =new File("sdf") ;

OutputStreamoutputFile = new FileOutputStream(f);

ObjectOutputStreamcout = new ObjectOutputStream(outputFile);

cout.writeObject(newPerson("张三",25));

cout.close();

对象的读取:

InputStreaminputFile = new FileInputStream(f);

ObjectInputStreamcin = new ObjectInputStream(inputFile);

Person p =(Person) cin.readObject();

System.out.println(p);

 

 

 

0 0
原创粉丝点击