-
逐个字节拷贝 public static void copyFileByByte(File srcFile, File destFile) throws IOException { if(!srcFile.exists()) throw new IllegalArgumentException("文件不存在"); if(!srcFile.isFile()) throw new IllegalArgumentException("不是文件"); //接下来看着,读是读,写是写,各司其职 FileInputStream in = new FileInputStream (srcFile); FileOutputStream out = new FileOutputStream (destFile); int b = 0; while((b = in.read())!=-1) { out.write(b); out.flush(); //不是使用缓冲输入流 这里 就可有可无 } in.close(); out.close(); } 通过比较这么集中用的时间可以发现,逐个字节是最浪费时间的,批量读入是最快的,但实际中的性能不是很好。比较折中的是使用第二种使用缓冲字节流进行拷贝查看全部
-
自定义缓冲数组一次性读入 public static void copyFile(File srcFile, File destFile) throws IOException { if(!srcFile.exists()) //判断要拷贝的源文件是不是存在 throw new IllegalArgumentException("源文件"+srcFile.getName()+"不存在"); if(!srcFile.isFile()) throw new IllegalArgumentException(srcFile + "不是文件"); //接下来看着,读是读,写是写,各司其职 FileInputStream in = new FileInputStream (srcFile); FileOutputStream out = new FileOutputStream (destFile); //接下来是前面写过的代码,直接进行批量的读写 byte[] buf = new byte[8*1024]; int b; //读取的字节数 while((b = in.read(buf, 0, buf.length))!=-1) { out.write(buf); out.flush(); //这个方法是从OutputStream中继承而来的,不加也行,最好是用上 } in.close(); out.close(); }查看全部
-
使用BufferedInputStream和BufferedOutputStreaem做文件拷贝 经典程序段 public static void copyFileBuffer(File srcFile, File destFile)throws IOException { if(!srcFile.exists()) throw new IllegalArgumentException("文件不存在"); if(!srcFile.isFile()) throw new IllegalArgumentException("不是文件"); BufferedInputStream bis = new BufferedInputStream(new FileInputStream(srcFile)); BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(destFile)); //使用的就是 BufferedInputStream 这个类自身维护的有一个 buf数组缓冲区所以这里我们不需要再定音buf int c; while((c = bis.read())!=-1) { bos.write(c); bos.flush(); //注意这个表示刷新缓冲区 在 Buffered.. } bis.close(); bos.close(); }查看全部
-
BufferedInputStream查看全部
-
BufferedInputStream / BufferedOutputStream查看全部
-
byte[] gbk = "中国".getBytes(); //还可以直接这样用 IllegalArgumentsException 非法传递参数异常查看全部
-
复制文件内容查看全部
-
复制文件例子查看全部
-
循环利用byte数组查看全部
-
transient关键字查看全部
-
什么是序列化查看全部
-
把一个字符串转化成字节数组,代码如下: String s="你好世界" char[] shuzu=s.查看全部
-
RandomAccessFile的使用: 1.java提供的对文件内容的访问,可读写,可的访问文件的任意位置 2.打开文件RandomAccessFile raf=new RandomAccessFile(file,"rw"); 3.写的方法(fil,write(int)-----> raf.只写一个字节,同时指针指向下一个位置,准备再次写入 4.读-->int b=raf.read();读一个字节 5.关闭查看全部
-
I/O输入输出流 编码问题:打开文件夹出现乱码 String c="我爱慕课"; byte[] ba=c.getBytes();//字节 for(byte bb:ba){ //把字节(转换成int)以16进制的方式显示 System.out.print(Integer.toHexString(bb & 0xff)+" "); } //设置成目标编码 byte[] ba=c.getBytes("gbk"); 此时可能有异常,所以使用异常接口 java是双字节编码【utf-16be中英文占用两个字节】 在电脑上直接创建的文本文件默人、认ANSI编码,所以..乱码查看全部
-
File类的使用: 1.File常用类API介绍 java.io.Fail类用于表示文件的(目录) File类只用于表示文件(目录)的信息(名称,大小),不能用于文件内容的访问 //创建文件 File file=new File("E:\\javaio"); //判断是否存在 file.exists(); //创建文件 file.mkdir(); //创建文件多级目录 file.mkdirs(); //删除文件 file.delete(); //是否是一个目录 file.isDirectory(); //是否是一个文件 file.isFile(); //创建一个文件 【File file=new File("E:\\javaio\\1.txt"); 或者用File file=new File("E:\\javaio","1.txt");】 【//打印目录路径或说file.toString()的内容 System.out.println(file); 或者为:System.out.println(file.getAbsolutePath()); System.out.println(file。getName());】 【//打印文件路径或说file.toString()的内容 System.out.println(file.getParent()); 或者为:System.out.println(file.getAbsolutePath());】 2.使用 //列出指定目录下(包括子目录)的所有文件list()方法 if(file.exists()){....} if(!file.isDirectory){...} String[] filename=file.list(); for(String name:filename){ System.out.println(name+"\\"+String); } //列出指定目录下(包括子目录)的所有文件路径 File[] files=file.listFile(); 采用递归打印子目录查看全部
举报
0/150
提交
取消