java IO

来源:互联网 发布:如何申请淘宝 编辑:程序博客网 时间:2024/06/18 05:35

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


File类的操作

//创建一个文件下的某个文件,先创建文件夹,否则会创建失败 //File 方法调用1.判断目录是否存在,2.创建目录,3.判断文件是否存在,4.删除文件 5.创建文件 //6列出目录下所有文件名称 6.得到目录下所有文件urlFile 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 0
原创粉丝点击