java IO流练习:文件复制、遍历子目录、复制所有子目录
来源:互联网 发布:战斗机的分类 知乎 编辑:程序博客网 时间:2024/06/09 15:01
import org.junit.Test;import java.awt.*;import java.io.*;import java.net.URI;import java.net.URISyntaxException;import java.text.SimpleDateFormat;/** * @author king * Created by king on 2017/5/19. */public class IOTrain { // @Test public void testTime() {//测试函数运行时间 long start = System.currentTimeMillis(); for (int i = 0; i < 1; i++) { try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } long end = System.currentTimeMillis(); SimpleDateFormat sdf = new SimpleDateFormat("s"); System.out.println(sdf.format(end - start)); } // @Test public void createFile() {//创建a.txt File file = new File("D:\\file\\a.txt"); try { file.createNewFile(); } catch (IOException e) { e.printStackTrace(); } } // @Test public void fileList() {//列出D盘下的所有文件、文件夹 File file = new File("D:"); String[] ss = file.list(); for (String s : ss) System.out.println(s); } // @Test public void fileList2() {//列出D盘下的所有文件、文件夹 File file = new File("D:"); File[] files = file.listFiles(); for (File f : files) System.out.println(f.getPath()); } // @Test public void makeDir() {//创建文件夹 File file = new File("D:\\file\\44"); file.mkdir(); } // @Test public void testShowAllDir() {//显示D盘下所有的子文件 String path = "D:"; showAllDir(path); } public void showAllDir(String path) { File file = new File(path); File fs[] = file.listFiles(); for (int i = 0; i < fs.length; i++) { if (fs[i].isDirectory()) { try { showAllDir(fs[i].getAbsolutePath()); } catch (Exception e) { } } else { System.out.println(fs[i].getAbsolutePath()); } } } // @Test public void browseBaidu1() {//用浏览器打开百度 try { URI uri = new URI("http://www.baidu.com"); Desktop.getDesktop().browse(uri); } catch (Exception e) { } } // @Test public void browseBaidu2() {//用浏览器打开百度,完整版 String webSite = "http://www.baidu.com"; Desktop desktop = Desktop.getDesktop(); if (Desktop.isDesktopSupported() && desktop.isSupported(Desktop.Action.BROWSE)) { URI uri = null; try { uri = new URI(webSite); } catch (URISyntaxException e) { e.printStackTrace(); } try { desktop.browse(uri); } catch (IOException e) { e.printStackTrace(); } } } // @Test public void readByte() {// 从文件系统中的某个文件中获得输入字节 try (FileInputStream fs = new FileInputStream("D:\\file\\1.txt")) { byte[] buffer = new byte[1024]; int n = 0; while ((n = fs.read(buffer)) != -1) { System.out.println(new String(buffer)); } } catch (IOException e) { e.printStackTrace(); } } @Test public void writeByte() {//FileOutputStream,意为文件输出流,是用于将数据写入File或 FileDescriptor的输出流。 try (FileOutputStream fs = new FileOutputStream("D:\\file\\3.txt")) { fs.write("哈尔滨".getBytes()); } catch (IOException e) { e.printStackTrace(); } } // @Test public void copyByte() {//将1.txt拷贝到2.txt try (FileOutputStream w = new FileOutputStream("D:\\file\\2.txt"); FileInputStream r = new FileInputStream("D:\\file\\1.txt")) { byte[] buffer = new byte[1024]; int n = 0; while ((n = r.read(buffer)) != -1) { w.write(buffer, 0, n); } } catch (IOException e) { e.printStackTrace(); } } // @Test public void readChar() {//FileReader类从InputStreamReader类继承而来。该类按字符读取流中数据。 try (Reader reader = new FileReader("D:\\file\\1.txt")) { char[] buffer = new char[20]; int n = 0; while ((n = reader.read(buffer)) != -1) { System.out.println(buffer); } } catch (IOException e) { e.printStackTrace(); } } // @Test public void writeChar() {//FileWriter类从OutputStreamReader类继承而来。该类按字符向流中写入数据。 try (Writer writer = new FileWriter("D:\\file\\1.txt")) { writer.write("哈尔滨"); } catch (IOException e) { e.printStackTrace(); } } // @Test public void copyChar() {//按字符流将1.txt复制给2.txt try (FileReader reader = new FileReader("D:\\file\\1.txt"); FileWriter writer = new FileWriter("D:\\file\\2.txt")) { int n = 0; char[] buffer = new char[20]; while ((n = reader.read(buffer)) != -1) { writer.write(buffer, 0, n); } } catch (IOException e) { e.printStackTrace(); } } // @Test public void FindFileByType() {//查找 *.bat File file = new File("D:"); File[] find = file.listFiles(new FilenameFilter() { @Override public boolean accept(File dir, String name) { return name.endsWith(".bat"); } }); for (File f : find) System.out.println(f.getName()); } // @Test public void testCopyAllDir1() { String readPath = "D:\\file";//源地址 String writePath = "D:\\file2";//目标地址 new File(writePath).mkdirs(); copyAllDir1(readPath, writePath); } public void copyAllDir1(String readPath, String writePath) { File file = new File(readPath); File[] fs = file.listFiles(); for (int i = 0; i < fs.length; i++) { try { if (fs[i].isDirectory()) { fs[i].mkdir(); copyAllDir1(fs[i].getAbsolutePath(), writePath + "\\" + fs[i].getName()); } else { System.out.println(fs[i].getAbsolutePath()); } } catch (Exception e) { } } } // @Test public void testCopyAllDir2() { String readPath = "D:\\file";//源地址 String writePath = "D:\\file2";//目标地址 new File(writePath).mkdir(); copyAllDir2(readPath, writePath); } public void copyAllDir2(String readPath, String writePath) {//将readPath中的所有子文件拷贝到writePath目录下。 //获取当前readPath目录下所有文件、文件夹,并存在fs[] 中 File file = new File(readPath); File fs[] = file.listFiles(); //fs!=null 排除空指针异常 if (fs != null) { //遍历当前目录 for (int i = 0; i < fs.length; i++) { //如果当前对象fs[i]是文件夹,则在目标地址中创建同名的文件夹。 if (fs[i].isDirectory()) { new File(writePath + "\\" + fs[i].getName()).mkdir(); copyAllDir2(fs[i].getPath(), writePath + "\\" + fs[i].getName()); } //如果当前对象fs[i]是文件,那么按字节拷贝到目标地址。 else { try (FileInputStream readFile = new FileInputStream(fs[i].getPath());/*从这里读数据*/ FileOutputStream writeFile = new FileOutputStream(writePath + "\\" + fs[i].getName()))/*往这里写数据*/ { byte[] buffer = new byte[1024]; int n = 0; while ((n = readFile.read(buffer)) != -1) { writeFile.write(buffer, 0, n); } } catch (IOException e) { e.printStackTrace(); } } } } }// @Test public void mergeRandomAccessFile() {//将两个mp3文件合并。RandomAccessFile的唯一父类是Object try (RandomAccessFile r = new RandomAccessFile("c://1.mp3", "r"); RandomAccessFile w = new RandomAccessFile("c://2.mp3", "rw")) { byte[] buffer = new byte[1024 * 1024]; w.seek(1024 * 1024);//定位到末尾,MP3 avi int n = 0; while ((n = r.read(buffer)) != -1) { w.write(buffer, 0, n); } } catch (Exception e) { e.printStackTrace(); } }// @Test public void copyRandomAccessFile() {//复制文件。RandomAccessFile已经被JDK1.4的nio的"内存映射文件(memory-mapped files)"给取代了。 try (RandomAccessFile r = new RandomAccessFile("c://1.wmv", "r"); RandomAccessFile w = new RandomAccessFile("d://2.wmv", "rw")) { byte[] buffer = new byte[1024 * 1024]; int n = 0; while ((n = r.read(buffer)) != -1) { w.write(buffer, 0, n); } } catch (Exception e) { e.printStackTrace(); } }// @Test public void divideRandomAccessFile(){//将1.txt分割为多个 try(RandomAccessFile r=new RandomAccessFile("D:\\file\\1.txt","r")){ byte[] buffer=new byte[2]; int n=0; int i=1; while((n=r.read(buffer))!=-1){ RandomAccessFile w=new RandomAccessFile("D:\\file\\1_"+(i++)+".txt","rw"); w.write(buffer,0,n); } }catch (IOException e) { e.printStackTrace(); } } @Test public void mergeFile(){//将多个1_?.txt文件合并为一个1.txt文件 File file=null; try(RandomAccessFile w=new RandomAccessFile("D:\\file\\1.txt","rw")){ int i=1; while((file=new File("D:\\file\\1_"+(i++)+".txt")).exists()){ RandomAccessFile r=new RandomAccessFile(file,"r"); copyTo(r,w); } }catch(IOException e){e.printStackTrace();} } private void copyTo(RandomAccessFile r, RandomAccessFile w) throws IOException { byte[] buffer=new byte[8]; int n=0; while((n=r.read(buffer))!=-1){ w.write(buffer,0,n); } }}
阅读全文
0 0
- java IO流练习:文件复制、遍历子目录、复制所有子目录
- IO流之复制文件夹中及其子目录中的文件
- JAVA递归复制目录下所有子目录和文件
- 批处理:复制目录A及其A子目录里的文件到A并删掉所有子目录
- java 文件夹及其子目录 子文件的复制
- 遍历目录内所有子目录及子目录中的文件
- xcopy 复制文件和目录,包括子目录。
- Xcopy 复制文件和目录,包括子目录。
- Xcopy 复制文件和目录,包括子目录。
- Xcopy 复制文件和目录,包括子目录
- 文件夹及其子目录复制
- [批处理]把指定文件复制到指定目录下的所有子目录下(包括子目录的下级目录)
- 遍历所有子目录——BAT文件
- Android.mk遍历子目录所有文件
- Android.mk遍历子目录所有文件
- delphi 文件搜索,遍历所有子目录
- JAVA 复制文件夹(含子目录)
- linux下复制目录中所有文件及子目录(包括隐藏文件)
- bootstrap 常用记录
- 如何在服务器上展示你的你的网页--no!!!用github也可以
- mysql osc-在线修改表结构
- 蓝桥杯决赛之密文搜索
- 五大开源Web服务器
- java IO流练习:文件复制、遍历子目录、复制所有子目录
- Webbench压力测试
- 置信度传播算法(Belief Propagation)
- Hibernate无法自动创建表
- bootstrapValidator自定义校验
- java数字签名实现简单的动态秘钥
- mysql主从复制
- java基础--面向对象(内存分析)
- (54)组件之移动组件