输入/输出(一)——编码,文件类,随机读写文件类

不同编码方式总结

import java.io.UnsupportedEncodingException;


public class Encode {
    public static void main(String[] args) throws UnsupportedEncodingException{

        String s = "慕课ABC";
        byte[] bytes1 = s.getBytes();
        for(Byte b:bytes1){
            System.out.print(b+" ");
            /*System.out.print(Integer.toHexString(b));
            System.out.println();*/
        }
        System.out.println();

        byte[] bytes2 = s.getBytes("gbk");//GBK编码一个汉子占两个字节,一个字母占一个字节
        for(Byte b:bytes2){
            System.out.print(b+" ");

        }

        System.out.println();

        byte[] bytes3 = s.getBytes("utf-8");//utf-8编码一个汉子占三个字节,一个字母占一个字节
        for(Byte b:bytes3){
            System.out.print(b+" ");

        }
        System.out.println();

        byte[] bytes4 = s.getBytes("utf-16be");//utf-16be编码一个汉子占两个字节,一个字母也占两个字节
        for(Byte b:bytes4){                     //java采用的是此编码                   
            System.out.print(b+" ");

        }
        System.out.println();
        String s1 = new String(bytes4,"utf-16be");
        System.out.println(s1);
    }


}

文件类使用总结

import java.io.File;
import java.io.IOException;

/*File类用于表示文件(目录)的信息,名称啊,大小啊,是否存在啊等,不能访问文件里面的信息
 * 
 * */
public class FileDemo {

    public static void main(String[] args){

        //双斜杠和反斜杠都可以,File.separator = \
        File file1 = new File("e:"+File.separator+"AndroidStudioProjects"+File.separator+"mooc");
        System.out.println(file1.toString());
        System.out.println(file1);//相当于file1.toString()的路径
        System.out.println(file1.getAbsolutePath());
        System.out.println(file1.getName());
        System.out.println(file1.getParent());


//```````````````````````````````````````````````````````````````````````````       
        //判断该文件夹是否存在
        File file = new File("E:\\AndroidStudioProjects\\mooc/mm");
        System.out.println(file.exists());
        //如果不存在,就创建文件夹,如果存在就删除
        if(!file.exists()){
            //file.mkdir();
            file.mkdirs();//创建多级目录
        }else{
            file.delete();
        }
        System.out.println(file.exists());
//```````````````````````````````````````````````````````````````````````````       
        //是否是一个目录,即是不是文件夹
        File file2 = new File("E:\\AndroidStudioProjects\\nn.txt");
        System.out.println(file2.exists());
        System.out.println(file2.isDirectory());//是否是一个目录,即文件夹
        System.out.println(file2.isFile());//是否是文件,即单个文件
        System.out.println(file2.getParent());
        System.out.println(file2.getParentFile().getName());
//```````````````````````````````````````````````````````````````````````````
        //判断文件是否存在,
    //  File file3 = new File("E:\\AndroidStudioProjects\\日记.txt");
        File file3 = new File("E:\\AndroidStudioProjects","日记.txt");
        if(!file3.exists()){
            try {
                file3.createNewFile();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }else file3.delete();

    }
}

随机读写文件总结(RandomAccessFile)

import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;


public class RandomDemo {

public static void main(String[] args) throws IOException{
    File demo = new File("demo");
    if(!demo.exists()){
        demo.mkdir();
    }
    File file = new File(demo,"raf.txt");
    if(!file.exists()){
        file.createNewFile();
    }
    //使用RandomAccessFile进行读写操作
    RandomAccessFile raf = new RandomAccessFile(file,"rw");
    System.out.println(raf.getFilePointer());//指针位置是从头开始的

    String s = "中";
    byte[] bytes = s.getBytes("utf-8");//GBK编码一个汉子占两个字节,一个字母占一个字节
    raf.write(bytes);

    raf.write('A');
    System.out.println(raf.getFilePointer());
    raf.write('B');
    System.out.println(raf.getFilePointer());
    byte[] b = "ABC".getBytes();
    System.out.println(b.length);
    raf.write(b);
    System.out.println(raf.getFilePointer());

    int i = 0x7fffffff;//java采用的是utf-16be编码方式,一个int型占四个字节,汉子占两个字节,字符型占一个字节

//用write方法每次只能写一个字节,要吧i写进去,就要写四次
    raf.write(i>>>24);//高8位
    raf.write(i>>>16);
    raf.write(i>>>8);
    raf.write(i);
    System.out.println(raf.getFilePointer());

    /*String s = "中";
    byte[] bytes = s.getBytes("GBK");//GBK编码一个汉子占两个字节,一个字母占一个字节
    raf.write(bytes);*/

    System.out.println(raf.getFilePointer());

    //读文件,必须把指针移到头部
    raf.seek(0);
    byte[] byte1 = new byte[(int)raf.length()];//一次性读取
    raf.read(byte1);



}
}

遍历文件夹总结

import java.io.File;


public class Tools {
    /**
     * 遍历文件夹
     * */
    public static void listDirectory(File dir){

        if(!dir.exists()){
            throw new IllegalArgumentException("目录:"+dir+"不存在");
        }
        if(!dir.isDirectory()){
            throw new IllegalArgumentException(dir+"不是目录");
        }

        /*String[] filenames = dir.list();//返回的是字符串数组,直接子目录的名字,不包含次子目录的名字
        for(String filename:filenames){
            System.out.println(dir+"\\"+filename);
        }*/

        //如果要遍历子目录下的内容就需要构造File对象做递归,以下是返回的是File对象
        File[] files = dir.listFiles();//返回的是直接子目录(文件)的抽象
        if(files != null && files.length>0){
        for(File file:files){
            if(file.isDirectory()){
                listDirectory(file);
                }
            System.out.println(file);
            }
        }       
    }
    public static void main(String[] args){
        File dir = new File("F:\\gct");
        listDirectory(dir);
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值