8、IO相关

java.io中最重要的

1、  五个类:File、OutputStream、InputStream、Writer、Reader

2、  和一个接口:Serializable

 

 

File类

1、  操作文件与文件夹的类,

2、  RandomAccessFile,随机存取类,用来操作文件内容,如下

import java.io.File;

import java.io.RandomAccessFile;

 

publicclass hello{

    publicstaticvoid main(String args[])throws Exception{

        //创建文件夹

        File dir =new File("C:"+ File.separator +"AAA");

        dir.mkdir();

        System.out.println("create dir AAA");

        //判断是否文件夹

        if(dir.isDirectory())System.out.println("AAA is a directory");

       

        //创建文件

        File f1 =new File("C:"+ File.separator +"AAA\\AAA.txt");

        f1.createNewFile();

        System.out.println("create file AAA.txt in AAA dir");

        if(f1.isDirectory()==false)System.out.println("AAA.txt is not a directory");

        File f2 =new File("C:"+ File.separator +"AAA\\BBB.txt");

        f2.createNewFile();

        System.out.println("create file BBB.txt in AAA dir");

        if(f2.isDirectory()==false)System.out.println("BBB.txt is not a directory");

       

        //获取文件夹下的文件列表

        String[] files = dir.list();

        for(int i=0; i<files.length; i++){

            System.out.println("AAA dir has File : "+ files[i]);

        }

       

        System.out.println("10 seconds later delete file AAA.txt inAAA dir");

        Thread.sleep(10*1000);

        //删除文件

        f1.delete();

       

        //向文件中写入数据

        RandomAccessFile raf =new RandomAccessFile(f2,"rw");

        raf.writeBytes("hello kk");

        raf.close();

    }

}

 

 

字节流与字符流操作

1、  字节流,主要操作byte数组,使用InputStream、OutputStream类

2、  字符流,主要操作字符,一个字符两个字节,使用Reader、Writer类

3、  字符流的处理与字节流区别不大

a)        字符流不需要将数据转成byte类型

b)        字节流是直接操作文件内容

c)        字符流是先将数据加载到缓冲区(内存)中,再进行操作

d)        在程序中,优先使用字节流方式

字节流操作如下

import java.io.File;

import java.io.OutputStream;

import java.io.FileOutputStream;

import java.io.InputStream;

import java.io.FileInputStream;

 

publicclass hello{

    publicstaticvoid main(String args[])throws Exception{

        //声明文件,如果文件不存在则自动创建

        File f1 =new File("C:"+ File.separator +"AAA\\AAA.txt");

        //创建文件输出流(程序向文件输出字节流)

        OutputStream out =new FileOutputStream(f1);

        String str ="hello baby";

        byte bts[]= str.getBytes();

        //向文件输出字节流,并关闭输出流

        out.write(bts);

        out.close();

       

        //创建文件输入流(程序从文件输入字节流)

        InputStream in =new FileInputStream(f1);

        //通过f1.length()获取文件内容长度以提前申请字节流数组

        byte inbts[]=newbyte[(int)f1.length()];

        //将文件字节流输入到inbts变量中,并输入关闭字节流

        in.read(inbts);

        in.close();

        System.out.println("file stream is: "+new String(inbts));

    }

}

 

 

字符流——字节流转换

1、  文件保存的是字节流,而程序使用的是字符流,所以程序和文件之间的数据流需要有个转换器来转换一下,他们就是OutputStreamWriter和InputStreamReader。

如图

         参考如下

import java.io.File;

import java.io.InputStream;

import java.io.FileInputStream;

import java.io.Reader;

import java.io.InputStreamReader;

 

publicclass hello{

    publicstaticvoid main(String args[])throws Exception{

       

        File f1 =new File("C:"+ File.separator +"AAA\\AAA.txt");

       

        //字节流读取

        InputStream in =new FileInputStream(f1);

        byte inbts[]=newbyte[(int)f1.length()];

        in.read(inbts);

        System.out.println("Byte Stream : "+new String(inbts));

        in.close();

       

        //字节流转字符流后再读取

        InputStream inr =new FileInputStream(f1);

        Reader r =new InputStreamReader(inr);

        char c[]=newchar[100];

        r.read(c);

        System.out.println("String Stream: "+new String(c));

        r.close();

    }

}

 

 

其它流

1、  内存流,数据输向内存

2、  管道流,线程间通信

3、  打印流,提供打印功能,Sytem.out就是输出打印流对象,System.in是输入打印流对象

4、  等等

 

 

5、UTF是不定长编码,支持所有文字字符,所以java程序中一般使用UTF编码方式

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值