-
遍历文件夹其实就是对文件夹的遍历操作 思路: 拿到文件判断是否建立 是否为文件夹,是,调用list()方法 返回一个子文件的字符串数组 循环遍历调用自己的所建立的这个方法就行了
//fileList();//返回的是直接子目录的抽象
//list();//返回子目录的名称,不包含子目录下的内容
查看全部 -
常用方法 mkdir();//创建文件夹 mkdirs();//创建多级文件夹
exists();//判断是否存在
createNewFiles();//直接创建一个文件
System.out.println(file);//打印的是file的路径,file.toString();
getAbsolutePath();
查看全部 -
bos.flush();//刷新缓冲区查看全部
-
Buffer性能最好,相当于一瓢一瓢放入桶中然后一桶倒入缸中查看全部
-
String[] fileName = file.list(); File[] filelist = file.listfile();查看全部
-
编码: 1. UTF-8:一个中文三个字节,一个英文一个字节 GBK:一个中文两个字节,一个英文一个字节 ANSI UTF-16BE:中文两字节,英文两字节 2. getByte(),getByte("格式"),把字符串转换成字节数组,把字符串按指定的格式转换成字节数组 Integer.toHexString(一个对象(里面有一个字节) & 0xff),把字节转换成16进制的数字 3. 一个字节序列是什么编码,想把它转换成字符串,也得用这种编码,不然会乱码 String a=new String(byte4(字节数组),"对应的编码(utf-16be)"); System.out.print(a); 4. 项目默认什么编码,就只能接受什么编码格式的文本文件,不然会乱码(局限),直接复制文字就不会 5. 在中文电脑穿件的文本文档一般是ANSI编码格式,但是文本文档是能容纳各种编码格式的查看全部
-
对象的序列换与反序列化本质就是将一个对象转为byte查看全部
-
6.FileOutPutStream向文件写入数据,从内存→文件 FileOutPutStream out=new FileOutPutStream(File file);//文件如果不存在就创建,存在就删除在创建 FileOutPutStream out=new FileOutPutStream(String fileName); FileOutPutStream out=new FileOutPutStream(File file,true);//文件不存在就创建,如果存在就在后面追加 FileOutPutStream out=new FileOutPutStream(String fileName,true); 方法: write(char c);写入一个字符的低八位 int a=10; write(a>>>24); write(a>>>16); write(a>>>8); write(a);//写入一个整型需要写四次,因为一次只能写一个字节,一个字节八位,一个整型有32位 byte gbk[]="中国".getBytes("gbk"); write(gbk,0,gbk.length());//写入一个gbk编码格式的字符串 最后: close(); 文件克隆: if (!srcFile.exists()) throw new IllegalArgumentException("该文件" + srcFile + "不存在"); if (!srcFile.isFile()) throw new IllegalArgumentException("该目标不是文件"); FileOutputStream out = new FileOutputStream(destFile); FileInputStream in = new FileInputStream(srcFile); byte b[] = new byte[8 * 1024]; int bytes; while ((bytes = in.read(b, 0, b.length)) != -1) { out.write(b, 0, bytes); }查看全部
-
int bytes=in.read(buf,0,buf.length);此方法表示把读取的字节放入buf数组里面0到buf.length的位置,返回一个整型数字,表示放入了多少字节到数组buf里面。 这个方法有两个输出读取字节的方法 一:把数组设置得足够大,一次性全部读取进去,在用for循环输出 // byte buf[] = new byte[20 * 1024]; // int bytes = in.read(buf, 0, buf.length); // for (int i = 0; i < bytes; i++) { // if (buf[i] <= 0xf && buf[i] > 0) // System.out.print("0"); // System.out.print(Integer.toHexString(buf[i] & 0xff) + " "); // if ((i + 1) % 10 == 0) // System.out.println(); // // } 二: 数组不用设置那么大,使用while循环,重复使用数组,当把数组内读取到的数据输出的时候,重复读取接下来还没读取完的数据覆盖这个数组进行输出,直到read方法返回-1. byte buf[] = new byte[2 * 1024]; int bytes; while ((bytes = in.read(buf, 0, buf.length)) != 1) { for (int i = 0; i < bytes; i++) { if (buf[i] <= 0xf && buf[i] > 0) System.out.print("0"); System.out.print(Integer.toHexString(buf[i] & 0xff) + " "); if ((i + 1) % 10 == 0) System.out.println(); } }查看全部
-
IO输入输出流 1.字节流 1)inputStream输入流,从(控制台,文件等)输入到内存 outputStream输出流,从内存输出到,文件,控制台等 2)EOF=End或者读到-1就结束 3)输入流基本方法 int b=in.read();读取一个字节无符号填充到int低八位.-1是EOF,每次读取都会往后移动一个字节 in.read(byte[] b)读取数据填充到字节数组b里面 in.read(byte[] b,int start,int size)读取数据到字节数组b里面,从第start的位置开始,放size个字节 4)输出流基本方法 out.write(int b)写一个byte到流(内存),b的低8位 out.write(byte[]b)把一整个字节数组b写入流 out.write(byte[]b,int start,int size)把字节数组从start位置开始长度为size的字节写入流 5)FileInputStream文件输入流 是InputStream的子类,把文件中的数据输入(读)到流(内存)中,就是读取文件中的数据 FileInputStream in=new FileInputStream("文件地址"); int b;//用来接收从文件读取的字节 while((b=in.read())!=-1){ //循环读取文件中的每个字节,read()方法每读取一个字节,下次读取的时候回自动跳到下一个字节,当读取到的字节=-1时,就表示读取完了 if(b<=0xf) System.out.print("0");//java中以0x开头的表示16进制,0x1为1,,0xa为10,0xf为15,这条语句表示给个位数前面加个0 System.out.print(Integer.toHexString(b)+" ");}//把读取的每个字节用16进制的形式输出到控制台 in.close();//最后要关闭流查看全部
-
RandomAccessFile 可以对文件内容进行访问,可以写文件,也可以读文件,支持随机访问文件,可以访问文件的任意位置 1.java文件模型 在硬盘上的文件是byte byte byte储存的,是数据的集合 2.打开文件 有两种模式"rw"(读写) "r"(只读) RandomAccessFile r=new RandomAccessFile(file,"rw") 文件指针,打开文件时指针在开头,pointer=0 3.写方法 r.write()-->一次只写一个字节进去,同时指针指向下一个位置,准备再次写入 write('a')写入字符 String s="中"; byte []b=s.getBytes("gbk"); write(b);把字符串转换成gbk编码格式的字节数组,在写入 writeInt(123)写入数字 4.读方法 int b=r.read()-->一次只读一个字节 一次读一个字节 指定位置读取字节 一次读很多个字节: //读整个文件必须先把指针移动到头部 r.seek(0); //然后可以把文件的内容一次性读取到一个字节数组里面 byte b1[]=new byte[(int)r.length()]; r.read(b1);//把读取的数据内容放到括号里面的数组参数里面 //最后直接输出这个字节数组或者转换成其他形式输出 System.out.println(Arrays.toString(b1));//Arrays的toString(数组参数)方法直接把数值参数以[1,2,3,...]的形式输出 String s=new String(b1);//把读取的字节以字符串的形式输出 String s=new String(b1,"gbk");//把读取的字节以gbk编码格式的字符串输出(输出结果跟上面一样,因为每次输入的字节的编码格式都不一样) for(byte b:b1){ System.out.println(Integer.toHexString(b & 0xff)+" ");}//把读取的字节以16进制格式输出 5.文件读写完成后一定要关闭 r.close();查看全部
-
RandomAccessFile类适用于未知文件里面的排布情况,不能getInt等操作。它常用于下载文件,合并下载的文件。它的基本单位是byte查看全部
-
file类的一些复杂点的常用操作如过滤,遍历等(把这些方法都包装到一个类里面(FileUtils工具类)方便使用) 1.输出指定目录下(包含子目录)的所有文件 1.先判断是否存在还有是否是文件 2.调用listFiles()返回目录下的文件对象数组,然后用foreach方法遍历每一个文件对象,判断文件对象是否是目录,是的话调用本身这个方法(递归),不是的话直接输出文件对象。 public static void ListDiretory(File f) throws IOException { // 为了谨慎起见判断目录是否存在 if (!f.exists()) throw new IllegalArgumentException("该目录" + f + "不存在"); // 为了谨慎起见判断是否是目录 if (!f.isDirectory()) throw new IllegalArgumentException("该文件不是目录"); // String []s=f.list();//这个方法返回一个目录下文件名称的字符串数组 // for (String s1 : s) { // System.out.println(s1); File[] f1 = f.listFiles();//这个方法返回一个目录下的文件数组 if (f1 != null && f1.length > 0) { for (File f2 : f1) {//遍历这个文件数组的每一个文件 if (f2.isDirectory()) {//如果是目录就递归,不是就直接输出(不判断的话递归后会,不是目录的会被当做异常抛出,然后终止程序) System.out.println(f2); ListDiretory(f2); } else { System.out.println(f2); } } } }查看全部
-
java.io.File类用于表示文件或目录。 File类只用于表示目标文件(目录)的大小,名称,路径,并可进行是否存在的判断,还有创建和修改等,不能用于文件内容的访问查看全部
-
编码: 1. UTF-8:一个中文三个字节,一个英文一个字节 GBK:一个中文两个字节,一个英文一个字节 ANSI UTF-16BE:中文两字节,英文两字节 2. getByte(),getByte("格式"),把字符串转换成字节数组,把字符串按指定的格式转换成字节数组 Integer.toHexString(一个对象(里面有一个字节) & 0xff),把字节转换成16进制的数字 3. 一个字节序列是什么编码,想把它转换成字符串,也得用这种编码,不然会乱码 String a=new String(byte4(字节数组),"对应的编码(utf-16be)"); System.out.print(a); 4. 项目默认什么编码,就只能接受什么编码格式的文本文件,不然会乱码(局限),直接复制文字就不会 5. 在中文电脑穿件的文本文档一般是ANSI编码格式,但是文本文档是能容纳各种编码格式的查看全部
举报
0/150
提交
取消