最近观看了关于java 输入输出流的视频,在此做一下总结:
1、在我们平常使用的window电脑中,编码格式是ANSI,如果创建一个文本文件设置为UTF-8格式,中文会造成乱码;
2、将字符串转换为字节序列,利用的是默认的编码,一般是gbk
String s="我是lyt";
byte[] bytes=s.getBytes();
3、把字节转换为int 以16进制表示:可以用方法
Integer.toHexString(b & 0xff +"");
4、常见编码中英文占用字节数
gbk编码—-中文占2个字节,英文占用1个字节
utf-8编码—中文占3个字节,英文占用1个字节
java是双字节编码,java一个字符占两个字节,使用utf-16be
utf-16be —-中文占2个字节,英文占用2个字节
因此当字节序列是某种编码时,转换为字符串的时候也要用这种编码格式,否则会出现乱码,
byte数组如果是utf-8编码,那么转换为字符串时也要用utf-8编码
String str=new String(byte,"utf-8");
5、文本文件就是字节序列,可以是任意编码的字节序列;
如果在中文机器上,直接创建文本文件,只能放ANSI;
联、联通这两个词乱码纯属巧合,因为它们正好符合了utf-8编码规则。
6、java.io.file类用于表示文件或目录
File类只用于表示文件(目录)的信息(名称、大小)等,不能用于文件内容的访问
File file=new File("e:\\java\\io"); //创建file对象
file.exists(); //判断目录是否存在
if(!file.exists()){ //如果目录不存在
file.mkdir(); //创建目录 如果创建多级目录 file.mkdirs();
}
else{
file.delete(); //删除目录
}
file.isDirectory();//判断是否是一个目录
file.isFile();//判断是否是一个文件
7、 判断文件是否存在,不存在创建文件,存在删除文件,代码如下:
public class FileTest {
public static void main(String[] args) {
File file2= new File("E:\\java\\io\\a.txt");//方式1
File file3=new File("E:\\java\\io","a.txt");//方式2
if(!file2.exists()){
try {
file2.createNewFile(); //此处有异常 捕捉一下
} catch (IOException e) {
e.printStackTrace();
}
}
else{
file2.delete();
}
}
}
8、列出常用操作,过滤、遍历
public class FileUtils {
/**
* 列出指定目录下的(包括子目录的)所有文件
* @param dir
* @throws 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对象做递归操作,File提供了直接返回File对象的APi
File[] files=dir.listFiles();//返回的是直接子目录的抽象
// for(File file:files){
// System.out.println(file);
// }
if(files!=null&&files.length>0){
for(File file:files)
if(file.isDirectory()){
listDirectory(file); //递归
}
else{
System.out.println(file);
}
}
}
}
public class FileTest {
public static void main(String[] args) throws IOException{
FileUtils.listDirectory(new File("D:\\JiaKaoBaoDian"));
}
}