-
GBK编码,中文占用两个字节,英文占用一个字节! UTF-8编码,中文占用三个字节,英文占用一个字节! utf-16编码,中文占用两个字节,英文占用两个字节! 字节序列为某种编码时,要把字节序列转换为字符串,也需要使用相应的编码!否则,就会出现乱码! 文本文件本身就是字节序列,可以是各种编码的字节序列!但是,在中文系统的机器上创建的文本文件只能识别ansi编码(也就是GDK编码)! Eclips项目也只能识别与该项目编码相同的文本文件!查看全部
-
编码问题 1.gbk编码中一个中文汉字两个字节,一个英文一个字节。 2.utf-8编码中一个中文汉字占3个字节,一个英文一个字节.eclipse中默认是gbk编码。 3.utf-16beb编码中一个中文汉字和英文都是占用两个字节。 4.java中一个字符占两个字节,所以可以放入一个中文汉字。因为默认的gbk汉字占用两个字节。 5.java是双字节编码utf-16be 6.在使用中文编译器编写中文文档时,默认使用ANSI编码表,复制粘贴时会自动转换成对应的编码表。 7.用什么编码表编写的字符串,就要用什么编码表读取,否则会出现乱码。查看全部
-
FileInputStream文件读取 单字节读取即不用数组。read()//无参 /** * 批量读取,对大文件而言效率高,也是我们最常用的读文件的方式 * 单字节读取不适用于大文件,运行效率慢。 * @Inparam fileName * @throws IOException */ public static void printHexByByteArray(String fileName)throws IOException{ FileInputStream in = new FileInputStream(fileName); byte[] buf = new byte[8 * 1024]; /*从in中批量读取字节,放入到buf这个字节数组中, * 从第0个位置开始放,最多放buf.length个 * 返回的是读到的字节的个数 */ int bytes = in.read(buf,0,buf.length);//一次性读完,说明字节数组足够大 int j = 1; for(int i = 0; i < bytes;i++){ System.out.print(Integer.toHexString(buf[i] & 0xff)+" "); if(j++%10==0){ System.out.println(); } }查看全部
-
不适合读取大文件查看全部
-
InputStream、OutputStream 抽象了应用程序读写数据方式(父类,抽象类) FileInputStream、FileOutputStream (子类) EOF=End 及文件结尾(读到-1)(is.read())=-1 输入流基本方法 read(); 输入流基本方法 int b=in.read();读取一个字节无符号填充到int的低八位,前面的24位补零。(int是32位,一个字节8位)-1是EOF in.read(byte[] buf);读取数据填充到字节数组buf in.read(byte[] buf,int start,int size),同上,从buf的start位置开始存放size长度的数据 输出流基本方法 如果int b=in.read() //是无参的话则是读取一个字节无符号填充到int的低八位,前面的24位补零。 如果int b=in.read(byte[])//如果参数是字节数组,则把数据读到数组中并返回读取成功的个数给b。 out.write(int b) 写出一个byte到流,b的低八位 out.write(byte][] buf) 将buf字节数组都写入到流 out.write(byte[] buf,int start,int size);同上,详见read对应方法 FileInputStream--->具体实现了在文件上读取数据 FileOutputStream--->具体实现了在文件上写入数据 因为InputStream、OutputStream都是抽象类,所以不能直接实例化对象,必须借助他们的子类完成。 if(b<=0xF)表示的就是运算,就是b与十进制的15进行比较(十六进制F表示为十进制是15),如果返回true则表示b十进制对应的十六进制只有一个数字(包括字母)。查看全部
-
RondomAccessFilel类的使用 File file=new file("E:\\practice\\text"); //新建一个file并给予抽象路径 RandomAccessFile dir=new RandomAccessFile("file","rw"); //参数是要操作的file对象以及打开模式. dir.write()方法每次只写入一个字节 如果dir.write('A');因为字符占2个字节,所以只写后八位进去. int i=10; dir.wirteInt(i;) //则一次可以写入一个Int类型的,占用4个字节。 文件指针,打开文件时指针在开头pointer=0 getFilePointer();作用是返回当前指针的位置 String s="中"; byte[]gbk=s.getBytes("gbk");dir.wirte(gbk); //可以直接把字符串转换为byte数组里,然后write方法参数可以是一个字节数组。 length(); //可以判断文件里面存在多少个字节。 读文件的时候必须把指针移到文件头部通过方法seek(0); //把指针移到0位置. read(); 一次只能读取一个字节,参数如果是字节数组则一次可以把文件内容全部读取放到字节数组里。 byte[]buf=new byte[(int)raf.length()]; //把文件字节长度返回给buf这个数组; dir.read(buf); //就可以把文件内容全部读取放在buf字节数组中。 然后可以输出字节数组。 System.out,.println(Arrays.toString(buf));//把字节数组转为字符串输出 也可以以十六进制输出。 for(byte b:buf){ System.out.println(Interger.toHexString(b&0xff)) } 做完全部操作时要加上close();//关闭操作。查看全部
-
RomdomAccessFile java提供的对文件内容的访问,既可以读文件,也可以写文件.查看全部
-
RondomAccessFile查看全部
-
RondomAccessFile中的read,werite方法都有readXxx()与writeXxx(),就是可以直接读写多种数据类型的数据。 FileInputStream与FileOutputStream都没有readXxx,writeXxx()方法。查看全部
-
File的过滤,遍历等操作 列出指定目录下的(包括子目录)的所有文件 File file = new File(); exists() 方法用于判断文件或目录是否存在 isDirectory()方法判断File类的对象是否是目录 throw new IllegalArgumentException();抛出异常 String[] filenames = file.list() //返回的是字符串数组,列出当前目录下的所有子目录和文件,不包含子目录下的内容 //递归 for(String string : filenames){//将filenames数组中的值,循环赋值给string,直到filenames为空时,结束循环 System.out.println(string); } //如果要遍历目录下的内容就需要构造成File对象做递归操作,File提供了直接返回File对象的API File[] files = file.listFiles(); //返回的是直接子目录(文件)的抽象,就是当前目录下的所有子目录和文件以file形式返回。 //递归,遍历出该目录下所有文件信息,包括子目录下的文件 for(File f :files){ if(f.isDirectory){ //递归遍历该目录下的子目录的信息 listDirectory(f); } else{ System.out.pritln(f); } }查看全部
-
File类只用于表示文件(目录)的信息(名称,大小等),不能用于文件内容的访问查看全部
-
定义File类的时候可以参数可以是不存在的一个路径。用File的exists()来测试此抽象路径名表示的文件或目录是否存在。 抽象路径名中的第一个名称是目录名。抽象路径名中第一个名称之后的每个名称表示一个目录;最后一个名称既可以表示目录,也可以表示文件 绝对路径名是完整的路径名,不需要任何其他信息就可以定位它所表示的文件。相反,相对路径名必须使用取自其他路径名的信息进行解释。 假如C盘ABC文件夹里面有一个文件a.还有一个DEF文件夹里面有一个文件b. 那a和b的绝对文件路径分别为: C:\ABC\a C:\ABC\DEF\b 如果让a文件来表示2文件的路径。 绝对路径:C:\ABC\DEF\b 相对路径:DEF\b (因为a和b文件前面的C:\ABC这段路径相同,所以不用写出来). file的mkdir()是创建此抽象路径名(就是File一个实例的时候参数的那个地址)指定的目录。是只能在已经存在的目录中新创建一个目录,而且一次只能创建一个目录。可以创建则返回 true。 file的mkdirs()是创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。是可以创建不存在的目录,可以创建多个,可以创建则返回true。如果目录已经存在了就会创建失败。 file的createNewFile()作用是当且仅当不存在具有此抽象路径名指定名称的文件时,不可分地创建一个新的空文件,此抽象路径必须是已经存在的,不然找不到要创建文件的路径。创建的是文件。创建成功则返回true,指定文件已经存在则返回false.查看全部
-
file. file.delete(); 删除查看全部
-
编码问题 1.gbk编码中一个中文汉字两个字节,一个英文一个字节。 2.utf-8编码中一个中文汉字占3个字节,一个英文一个字节.eclipse中默认是gbk编码。 3.utf-16beb编码中一个中文汉字和英文都是占用两个字节。 4.java中一个字符占两个字节,所以可以放入一个中文汉字。因为默认的gbk汉字占用两个字节。 5.java是双字节编码utf-16be 6.在使用中文编译器编写中文文档时,默认使用ANSI编码表,复制粘贴时会自动转换成对应的编码表。 7.用什么编码表编写的字符串,就要用什么编码表读取,否则会出现乱码。查看全部
-
当你的字节序列是某种编码时,这个时候想把字节序列变成字符串,也需要用这种编码方式,否则会出现乱码。 String a="慕课网ABC"; byte[] b=a.getBytes("utf-16be");//把字符串转为字节数组,假如规定了是某编码,则转字符串时也要规定是那个编码。默认是gbk,无参时eclipse默认gbk编码。 String c=new String(b,"utf-16be")//把字节数组转为字符串,转换对应的编码。 System.out.println(c);查看全部
举报
0/150
提交
取消