疯狂java


您现在的位置: 疯狂软件 >> 新闻资讯 >> 正文

IO流 文件编码及File类使用


 

   

  编码问题:

  gbk编码中文占用2个字节,英文占用1个字节

  utf-8编码中文占用3个字节,英文占用1个字节

  java是双字节编码 是utf-16be编码中文占用2个字节,英文占用2个字节

  当你得字节序列是某种编码时,这个时候想把字节序列变成字符串,也需要这种编码方式,否则会出现乱码

  文本文件就是字节序列,可以是任意编码的字节序列

  如果我们在中文机器上直接创建文本文件,那么该文本文件只认识ansi编码

   File类常用API介绍

  java.io.File类用于表示文件(目录),可以对硬盘上的文件进行操作

  File类只用于标识文件(目录)的信息(名称、大小等),不能用于文件内容的访问

  public class FileDemo {

  public static void main(String [] args) {

  File file = new File("E:\javaio"); //创建一个File对象

  //File file1 = new File("e:"+File.separator); //File.separator设置分隔符

  System.out.println(file.exists()); //判断文件/文件夹是否存在

  if(!file.exists())

  flie.mkdir(); //如果目录不存在则创建目录

  else

  file.delete(); //删除文件/文件夹

  //是否是一个目录 是目录返回ture,如果不是目录或不存在返回false

  System.out.pringtln(file.isDirectory());

  //是否是一个文件

  System.out.pringtln(file.isFile());

  File file2 = new File("e:\javaio\日记1.txt");

  if(!file2.exists())

  file2.createNewFile(); //创建文件

  else

  file2.delete();

  System.out.println(file); //直接打印file对象,输出的是目录 file.to String()的内容

  System.out.println(file。getAbsolutePath()); //打印目录

  System.out.println(file.getName()); //打印最后目录名/文件名

  System.out.println(file.getParent()); //返回父目录的名

  }

  }

  ———————————————————————————————————————————————————

  File常用操作工具类

  用list方法遍历目录

  //列出File的一些常用操作比如过滤、遍历等操作

  public class FileUtils {

  //列出指定目录下(包括其子目录)的所有文件

  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 string : filenames) {

  System.out.println(string);

  }

  //如果要遍历子目录下的内中就需要构造File对象做递归操作,File提供了直接返回File对象的API

  File[] files = die.listFiles(); //返回的是直接子目录(文件)的抽象

  if(files!=null && files.lenght > 0){

  for(File file : files){

  if(file.isDirectory()){

  //递归

  listDirectory(file);

  }else{

  System.out.println(file);

  }

  }

  }

  }

  }