啃Java的日子之文件的编码及简单的目录遍历

来源:互联网 发布:文华财经交易软件 编辑:程序博客网 时间:2024/05/21 10:26

我们常常会出现当保存的是一个内容,但是你再打开某一个文件的时候,会显示乱码的情况,这就是编码的问题。

两种经常用的编码,一个是UTF-8,一个是GBK。

UTF-8中文占用三个自己,英文一个字节。GBK 中问占用两个字节,英文占用一个字节。

Java是双字节编码,UTF-16be

import java.io.UnsupportedEncodingException;public class fileEncoding {    /**     * @param args     * @throws Exception      */    public static void main(String[] args) throws Exception {        // TODO Auto-generated method stub        // 字符串转换为字节的形式        String s="你好java";        //GBK 编码,英文两个字节,英文一个字节        byte [] bytes=s.getBytes("gbk");        System.out.println("采用GBK 编码");        for(byte b:bytes){            //读取每一个字节(int 类型),然后将其获取到后面的几位然后转换输出                        System.out.print(Integer.toHexString(b & 0xff)+" ");//前几位是为了补齐位数而添加的在这里可以将其去掉        }           System.out.println(" ");        //UTF-8 字节编码,中文三个字节,英文一个字节        byte[] bytes2=s.getBytes("utf-8");        System.out.println("采用UTF-8");        for(byte b2:bytes2)        System.out.print(Integer.toHexString(b2 &0xff)+" ");        System.out.println(" ");                // Java采用utf-16be 编码 ,中文两个字节英文两个字节        byte[] b3=s.getBytes("utf-16be");        System.out.println("采用UTF-16be编码");        for(byte b:b3)            System.out.print(Integer.toHexString(b &0xff)+" ");    }}


将字节序列转换为字符串,要使用本身的编码方式在创建字符串的时候,new String 中可以传入编码方式作为参数.


二. 遍历目录下面的所有文件-----file类的使用

import java.io.File;import java.io.IOException;//file的过滤和遍历public class fileUtil {    /**     * 列出指定目录下的所有文件     * @param dir     * @exception IOException     */    public static void listDirectory( File dir) throws IOException{        //目录不存在        if(!dir.exists()){            throw new IllegalArgumentException("目录"+dir+"不存在");        }        //输入的不是目录        if(!dir.isDirectory()){            throw new IllegalArgumentException(dir+"不是目录");        }        /*        String [] filenames=dir.list(); //返回字符串数组,直接子目录下面的内容,        for(String s:filenames){            System.out.println(dir+"\\"+s);        }        */        //如果要遍历子目录那么就需要构造一个file对象然后在进行遍历,但是在Java中提供了这种API 可以帮助我们直接完成这个操作                File[] files= dir.listFiles();//直接返回file对象,返回直接子目录的抽象        if(files!=null&&files.length>0 )        {            for (File file:files){            if(file.isDirectory()){              listDirectory(file);             }            else{                System.out.println(file);            }        }               }                    }}








0 0
原创粉丝点击