java IO

总结出处:http://www.cnblogs.com/lich/archive/2011/12/10/2283445.html


File类的操作

//创建一个文件下的某个文件,先创建文件夹,否则会创建失败 
//File 方法调用1.判断目录是否存在,2.创建目录,3.判断文件是否存在,4.删除文件 5.创建文件 
//6列出目录下所有文件名称 6.得到目录下所有文件url
File fdir = new File("C:\\Users\\Administrator\\Desktop"+File.separator+"basic");
if(fdir.isDirectory()){  
    System.out.println("is directory");
}else{
    System.out.println("is not directory,mkdir");
    fdir.mkdir();
}
File ftxt1 = new File("C:\\Users\\Administrator\\Desktop"+File.separator+"basic"+File.separator+"ftxt1.txt");
if(ftxt1.exists()){
    System.out.println("ftxt1 is exists");
    //ftxt1.delete();
}else{
    try {
        System.out.println("ftxt1 is not exists,creat");
        ftxt1.createNewFile();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}
String[] fStrs=fdir.list();
for(int i=0;i<fStrs.length;i++){
    System.out.println(fStrs[i]);
}
File[] files = fdir.listFiles();
for(File f:files){
    System.out.println(f);
}

RandomAccessFile类

之前的File类只是针对文件本身进行操作的,而如果相对文件内容进行操作,则可以使用RandomAccessFile类,此类属于随即读取类,可以随机的读取一个文件中指定位置的数据。因为在文件中,所有得内容都是按照字节存放的,都有固定的保存位置。

public static void randomAccessFormText() throws IOException{
        File file = new File("C:\\Users\\Administrator\\Desktop"+File.separator+"basic"+File.separator+"ftxt2.txt");
        RandomAccessFile rf = new RandomAccessFile(file, "rw");
        String name1 = "肖";
        int age1 = 10;
        String name2="tto";
        int age2 = 26;
        rf.writeUTF(name1);
        rf.writeInt(age1);
        rf.writeBytes(name2);
        rf.writeInt(age2);
        rf.close();
        RandomAccessFile raf = new RandomAccessFile(file, "r");
        raf.skipBytes(9);
        byte[] bs = new byte[3];
        for(int i=0;i<bs.length;i++){
            bs[i] = raf.readByte();
        }
        String n2 = new String(bs);
        int ag2 = raf.readInt();
        System.out.println(n2+"\t"+ag2);
        raf.seek(0);
        System.out.println(raf.readUTF()+"\t"+raf.readInt());

    }

字节流字符流

public static void fileInputOutput() throws IOException{
        //写入 字节流
        File file = new File("C:\\Users\\Administrator\\Desktop"+File.separator+"basic"+File.separator+"ftxt2.txt");
        OutputStream os = new FileOutputStream(file,true);
        String s = "Hello word";
        os.write(s.getBytes());
        os.close();
        //读取 字节流
        InputStream is = new FileInputStream(file);
        byte[] bt = new byte[(int)file.length()];
        is.read(bt);
        //System.out.println(new String(bt));
        is.close();
        //写入 字符流
        Writer writer  = new FileWriter(file,true);
        String s1 = "Jone";
        writer.write(s1);
        //不关闭拼不上
        writer.close();
        //读出字符流
        Reader reader = new FileReader(file);
        char[] c = new char[1024];
        int len = 0;
        int temp = 0;
        while((temp=reader.read())!=-1){
            c[len] = (char)temp;
            len++;
        }

        System.out.println(new String(c));
    }

把一个文件里的内容拷贝到另一个文件

 public static boolean copyFile(File srcFile, File destFile) {
        FileInputStream fi = null;
        FileOutputStream fo = null;
        FileChannel in = null;
        FileChannel out = null;
        try {
            fi = new FileInputStream(srcFile);
            fo = new FileOutputStream(destFile);
            in = fi.getChannel();//得到对应的文件通道
            out = fo.getChannel();//得到对应的文件通道
            in.transferTo(0, in.size(), out);//连接两个通道,并且从in通道读取,然后写入out通道
            return true; 
        } catch (IOException e) {
            e.printStackTrace();
            return false;
        } finally {
            try {
                fi.close();
                in.close();
                fo.close();
                out.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

ByteArrayInputStream 和ByteArrayOutputStream

之前所讲解的程序中,输出和输入都是从文件中来得,当然,也可以将输出的位置设置在内存之上,此时就要使用ByteArrayInputStream、ByteArrayOutputStream来完成输入输出功能了

ByteArrayInputStream的主要功能将内容输入到内存之中

ByteArrayOutputStream的主要功能是将内存中的数据输出

优点:缓存 ,得到数据后可以不仅用来输出到硬盘,也可以到 显卡 。。。
此时应该把内存作为操作点

        ByteArrayInputStream和ByteArrayOutputStream


         String str="HELLO WORlD!!!";
         InputStream input=new ByteArrayInputStream(str.getBytes());
         OutputStream output=new ByteArrayOutputStream();
         int temp=0;
         while((temp=input.read())!=-1){
            output.write(Character.toLowerCase(temp));
         }
         input.close();
         output.close();
         System.out.println(output.toString());
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值