-
RandomAccessFile类 RandomAccessFile类 是java提供的对文件内容的访问,即可以读取文件,也可以写文件。RandomAccessFile类支持随机访问文件,可以访问文件的任意位置 ********RandomAccessFile类实现步骤 (1)java文件的模型 在硬盘上的文件是byte byte byte 存储的,是数据的集合 (2)打开文件 有两种模式“rw”(读写) “r”(只读) RandomAccessFile raf = new RandomAccessFile(File对象,"rw"); 文件指针,打开文件时指针在开头 pointer = 0; (3)写方法 raf.write(int)--->只写一个字节(后8位),同时指针指向下一个位置,准备再次写入 (4)读方法 int b = raf.read()--->读一个字节 (5)关闭流 文件读写完成以后一定要关闭流(Oracle官方说明) *RandomAccessFile 类的方法 raf.getFilePointer();--->获取指针的位置 raf.writeInt(i);//写入一个int raf.seek(0);//移动指针到index的位置 raf.length();返回的是long //一次性读取,把文件中的内容都读取到字节数组中 byte[] buf = new byte[(int)raf.length()] raf.read(buf); //变成字符串,装入数组中进行输出 Arrays.toString(buf); for(byte b : buf){ //以16进制进行输出 Integer.toHexString(b&0xff)+""; } raf.close();查看全部
-
1.IO流:输入流和输出流;(字节流和字符流) 2.字节流:InputStream、OutputStream;InputStream抽象了应用程序读取数据的方式;Outpustream抽象了应用程序写入数据的方式; EOF=End 读到-1就读取结束 3.输入流的基本方法 int b=in.read();读取一个字节无符号填充到int低八位。-1是EOF in.read(byte[]buf);读取数据填充到字节数据 buf中;in.read(byte[]buf,int start,int size)读取数据到字节数组buf从buf的start位置开始存放size长度的数据; 4.输出流的基本方法 out.write(int b)写入一个byte到流,b的低8位 out.write(byte[]buf)将buf字节数组都写入到流 out.write(byte[]buf,int start,int size);字节数组buf从start位置开始写size长度的字节到流查看全部
-
RandomAccessFile类 RandomAccessFile类 是java提供的对文件内容的访问,即可以读取文件,也可以写文件。RandomAccessFile类支持随机访问文件,可以访问文件的任意位置 ********RandomAccessFile类实现步骤 (1)java文件的模型 在硬盘上的文件是byte byte byte 存储的,是数据的集合 (2)打开文件 有两种模式“rw”(读写) “r”(只读) RandomAccessFile raf = new RandomAccessFile(File对象,"rw"); 文件指针,打开文件时指针在开头 pointer = 0; (3)写方法 raf.write(int)--->只写一个字节(后8位),同时指针指向下一个位置,准备再次写入 (4)读方法 int b = raf.read()--->读一个字节 (5)关闭流 文件读写完成以后一定要关闭流(Oracle官方说明) *RandomAccessFile 类的方法 raf.getFilePointer();--->获取指针的位置 raf.writeInt(i);//写入一个int raf.seek(0);//移动指针到index的位置 raf.length();返回的是long //一次性读取,把文件中的内容都读取到字节数组中 byte[] buf = new byte[(int)raf.length()] raf.read(buf); //变成字符串,装入数组中进行输出 Arrays.toString(buf); for(byte b : buf){ //以16进制进行输出 Integer.toHexString(b&0xff)+""; } raf.close();查看全部
-
1.File dir=new File("文件路径");String[]fileNames=dir.list();返回的是字符串数组,直接子的名称,不包含子目录的内容; 2.File[]files=dir.listFiles();返回的是直接子目录(文件)的抽象;查看全部
-
1.java.io.File类用于表示文件(目录) File类只用于表示文件(目录)的信息(名称、大小等),不能用于文件内容的访问; 2. File file=new File("文件的目录"); if(!file.exists())file.mkdir();//文件不存在,直接创建文件; 3.file.isDirectory();判断是否是一个目录,如果是目录返回true,如果不是目录或者目录不存在返回的是false;file.isFile();判断是否是文件查看全部
-
1.在gbk编码中,中文占用两个字节,英文占用一个字节;在utf-8编码中,中文占用三个字节,英文占用一个字节; 2. String s="慕课ABC"; byte[]bytes1=s.getBytes(); Integer.toHexString(b&0xff); 把字节(转换成int)以16进制的方式显示 3.Java是双字节编码utf-16be;中文占两个字节,英文占两个字节; 4.当字节序列是某种编码时,这时候想把字节序列变成字符串,也需要这种编码方式,否则会出现乱码; 5.文本文件就是字节序列;在中文机器上直接创建文本文件,那么该文本只认识ANSI编码方式;查看全部
-
File类判断是目录还是文件查看全部
-
当你将字节数组以默认的方式转成字符串String,是以项目默认的编码格式进行的转码,如果以其本身的编码方式不一致就会乱码查看全部
-
GBK和UTF-8编码中英文字符占用字节数查看全部
-
String[] filenames = file.list() //返回的是字符串数组,列出当前目录下的所有子目录和文件,不包含子目录下的内容 如果要遍历子目录下的内容就需要构造成File对象做递归操作,File提供了直接返回File对象的API File[] files = file.listFiles(); //返回的是File数组,列出当前目录下的所有子目录和文件,不包含子目录下的内容 //递归,遍历出该目录下所有文件信息,包括子目录下的文件 for(File f :files){ if(f.isDirectory){ //递归遍历该目录下的子目录的信息 listDirectory(file); } else{ System.out.pritln(file); } }查看全部
-
1、创建File文件对象 param: 文件地址 File file = new File("E:\\javaio"); or new File("E:" + File.sepatator); File.sepatator 不同系统通用分隔符 file.exists() 文件或目录是否存在 file.mkdir() 创建文件夹 file.mkdirs() 创建层级文件夹,不需要父级文件夹存在 file.isDirectory() bool 是否是一个目录 如果是返回时TRUE,不是或者不存在返回FALSE file.isFile() bool 是否是一个文件 File file2 = new File("E:\\java\\test.txt"); File file2 = new File("E:\\java","test.txt"); file2.delete(); 删除文件 file2.createNewFile(); 创建文件 常用的FILE对象的API 打印file对象获得文件目录 等效于 file.getAbsolutePath() file.getName() 如果是文件获得文件名,如果是文件夹过的文件名称 file.getParent() 父目录路径 file.getParentFile() File 父目录对象 file.length();获取文件大小。 file.getFormat();获取文件格式名。 file.createNewFile();创建新文件。查看全部
-
String s="慕课ABC"; byte[] bytes1=s.getBytes();//这是把字符串转换成字符数组,转换成的字节序列用的是项目默认的编码 for(byte b: bytes1) System.out.println(Integer.toHexString(b & 0xff)+" ");// & 0xff是为了把前面的24个0去掉只留下后八位//之所以只留八位是因为原始byte型数据就只有八位,去掉因为转换为int型而多余的24位 //toHexString这个函数是把字节(转换成了Int)以16进制的方式显示//totoHexString()是Integer的方法,其默认参数是int型,接收byte型就自动转为int,然后执行转十六进制的操作,转十六进制是为了方便观察其编码方式,即各自有多少字节,如果不转为16进制,二进制数位太多,不便观察 byte[] bytes1=s.getBytes("gbk");//也可以转换成指定的编码 gbk编码: 中文占用两个字节,英文占用一个字节 utf-8编码:中文占用三个字节,英文占用一个字节 java是双字节编码,是utf-16be编码 utf-16be编码:中文占用两个字节,英文占用两个字节 当你的字节序列是某种编码时,这个时候想把字节序列变成字符串,也需要用这种编码方式,否则会出现乱码 String str1=new String(bytes4);//这时会使用项目默认的编码来转换,可能出现乱码 要使用字节序列的编码来进行转换 String str2=new String(bytes4,"utf-16be"); 文本文件就是字节序列,可以是任意编码的字节序列 如果我们在中文机器上直接创建文本文件,那么该文件只认识ANSI编码(例如直接在电脑中创建文本文件)//此处的原理是本身中文机器可以识别所有编码,但是如果直接在中文机器上创建文件时,默认以ansi编码,因此读取时也自动以此种编码方式读,而你如果不是在中文机器上创建文件时,其会选择合适的编码方式来解读。特别注意一点是“联通”和“联”是特例,其默认编码不是ansi。查看全部
-
String s="慕课ABC"; byte[] bytes1=s.getBytes();//这是把字符串转换成字符数组,转换成的字节序列用的是项目默认的编码 for(byte b: bytes1) System.out.println(Integer.toHexString(b & 0xff)+" ");// & 0xff是为了把前面的24个0去掉只留下后八位//之所以只留八位是因为原始byte型数据就只有八位,去掉因为转换为int型而多余的24位 //toHexString这个函数是把字节(转换成了Int)以16进制的方式显示//totoHexString()是Integer的方法,其默认参数是int型,接收byte型就自动转为int,然后执行转十六进制的操作,转十六进制是为了方便观察其编码方式,即各自有多少字节,如果不转为16进制,二进制数位太多,不便观察 byte[] bytes1=s.getBytes("gbk");//也可以转换成指定的编码 gbk编码: 中文占用两个字节,英文占用一个字节 utf-8编码:中文占用三个字节,英文占用一个字节 java是双字节编码,是utf-16be编码 utf-16be编码:中文占用两个字节,英文占用两个字节 当你的字节序列是某种编码时,这个时候想把字节序列变成字符串,也需要用这种编码方式,否则会出现乱码 String str1=new String(bytes4);//这时会使用项目默认的编码来转换,可能出现乱码 要使用字节序列的编码来进行转换 String str2=new String(bytes4,"utf-16be"); 文本文件就是字节序列,可以是任意编码的字节序列 如果我们在中文机器上直接创建文本文件,那么该文件只认识ANSI编码(例如直接在电脑中创建文本文件)//此处的原理是本身中文机器可以识别所有编码,但是如果直接在中文机器上创建文件时,默认以ansi编码,因此读取时也自动以此种编码方式读,而你如果不是在中文机器上创建文件时,其会选择合适的编码方式来解读。特别注意一点是“联通”和“联”是特例,其默认编码不是ansi。查看全部
-
IO字节流查看全部
-
IO字节流查看全部
举报
0/150
提交
取消