IO流文件的复制删除
来源:互联网 发布:显示登录成功和链接php 编辑:程序博客网 时间:2024/05/22 12:54
http://mahua.jser.me/
别人的IO流学习小结 http://blog.csdn.net/zzp_403184692/article/details/8057693
IO流文件的复制删除
1.UI界面:
2.类结构
3.代码
package Copytool;类
import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;public class FileTool { // 文件的复制 public static void copyFile(String srcPath, String destPath, String srcKey, String destKey) { copyFile(new File(srcPath), new File(destPath), srcKey, destKey); } public static void copyFile(File srcFile, File destFile, String srcKey, String destKey) { InputStream in = null;// 定义 声明 初始化 OutputStream out = null; try { // 异常一 /** 第一步:流 **/ in = new FileInputStream(srcFile);// 子类转成父类?没问题 out = new FileOutputStream(destFile); /** 第二步:边写边读,,不能一次性读,内存不够 **/ byte[] buffer = new byte[512]; int length = in.read(buffer);// 有效字节个数 /** 第三步:关键字替换 验证关键字!! **/ if (srcFile == null || "".equals(srcFile)) { // 不进行替换 while (length != -1) { out.write(buffer, 0, length); length = in.read(buffer); } } else { // 进行替换 if (destKey == null) { destKey = ""; } // 进行替换 while (length != -1) { String string = new String(buffer, 0, length);// string = string.replace(srcKey, destKey);// 关键字替换 out.write(string.getBytes());// string -> byte[] length = in.read(buffer); } } // 异常二 // in.close(); } catch (Exception e) { e.printStackTrace(); } finally { /** 第三步: 关闭 **/ try { if (in != null) { // int a = 1/0; // 异常三 in.close(); } } catch (IOException e) { e.printStackTrace(); } finally { in = null;// 交给gc处理 } try { if (out != null) { out.close(); } } catch (IOException e) { e.printStackTrace(); } finally { out = null; } } } public static void copyFolder(String srcPath, String destPath, String srcKey, String destKey) { File srcFile = new File(srcPath); File destFile = new File(destPath); copyFolder(srcFile, destFile, srcKey, destKey); } public static void copyFolder(File srcFile, File destFile, String srcKey, String destKey) { /** 第一步: 判断是否存在 **/ if (srcFile != null && srcFile.exists()) { /** 第二步: 判断是否是文件夹 **/ if (srcFile.isDirectory()) { // File流只能帮你创建文件,,不能创建一个文件夹 if (!destFile.exists()) { destFile.mkdirs(); } /** 第三步: 拿到文件夹里面的文件或文件夹的那个文件数组!!!,, **/ File[] listFiles = srcFile.listFiles(); /** 第四步:遍历递归 **/ for (File f : listFiles) // 增强for循环,1.5后 { // 由于srcFile 路径变长了->destFile 也要变长 String name = f.getName(); // 变长的部分!!! // 把目标文件也不变长 File file = new File(destFile, name); copyFolder(f, file, srcKey, destKey);// 递归自己 } } else { // 必定是文件了!! copyFile(srcFile, destFile, srcKey, destKey); } } } public static void deleteFolder(String path) { deleteFolder(new File(path)); } public static void deleteFolder(File file) { /** 第一步: 判断是否存在 **/ if (file != null && file.exists()) { /** 第二步: 判断是否是文件夹 **/ if (file.isDirectory()) { File[] listFiles = file.listFiles(); if (listFiles.length != 0) { // 删除孩子!! for (int i = 0; i < listFiles.length; i++) { File file2 = listFiles[i]; deleteFolder(file2); } } // 自己 空的文件夹 file.delete(); } else { file.delete(); } } } public static void saveFile(String path, String content) { // saveFile(new File(path), content); } public static void saveFile(File file, String content) { // if (file != null) { /** 第一步: 判断父类文件夹存不存在 **/ // c:\\aa\\bb\cc File parentFile = file.getParentFile();// 拿到父类文件夹!!! if (!parentFile.exists()) { parentFile.mkdirs(); } /** 第二步: 流写 out **/ OutputStream out = null; try { out = new FileOutputStream(file); out.write(content.getBytes());// string->byte } catch (Exception e) { e.printStackTrace(); } finally { if (out != null) try { out.close(); } catch (IOException e) { e.printStackTrace(); } finally { out = null; } } } }}
MyFrame类
***package Copytool;import javax.swing.JFrame;public class MyFrame extends JFrame { public MyFrame() { // TODO Auto-generated constructor stub this.setTitle("文件拷贝"); MyPanel jp = new MyPanel(); this.add(jp); this.setSize(550, 400); this.setVisible(true); } public static void main(String[] args) { new MyFrame(); }}***
MyPanel类
package Copytool;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.io.File;import javax.swing.JButton;import javax.swing.JFileChooser;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JTextField;public class MyPanel extends JPanel { public String srcPath = ""; public String destPath = ""; public String destname; public String savename; public String srcKey = "", destKey = ""; public String path, content; public MyPanel() { // TODO Auto-generated constructor stub init(); } /** * 面板内容 */ private void init() { this.setLayout(null); // 复制选项 JLabel jl = new JLabel("复制选项:"); jl.setBounds(45, 20, 80, 20);// 205 this.add(jl); JLabel jl1 = new JLabel("原来路径"); jl1.setBounds(45, 50, 80, 20); this.add(jl1); JTextField tf1 = new JTextField(); tf1.setBounds(100, 50, 250, 20); this.add(tf1); JButton jb1 = new JButton("选择复制路径"); jb1.setBounds(360, 50, 60, 20); this.add(jb1); JLabel jl2 = new JLabel("目标路径"); jl2.setBounds(45, 80, 80, 20); this.add(jl2); JTextField tf2 = new JTextField(); tf2.setBounds(100, 80, 250, 20); this.add(tf2); JButton jb2 = new JButton("选择目标路径"); jb2.setBounds(360, 80, 60, 20); this.add(jb2); // 关键字转换 JLabel jl0 = new JLabel("关键字转换:"); jl0.setBounds(45, 110, 80, 20);// 200 this.add(jl0); JTextField tf3 = new JTextField(); tf3.setBounds(50, 140, 120, 20); this.add(tf3); JLabel jb3 = new JLabel("转成"); jb3.setBounds(217, 140, 60, 20); this.add(jb3); JTextField tf4 = new JTextField(); tf4.setBounds(300, 140, 120, 20); this.add(tf4); // String s; // 删除与保存 JLabel jl01 = new JLabel("删除与保存:"); jl01.setBounds(45, 175, 80, 20);// 200 this.add(jl01); // 删除 JLabel jl3 = new JLabel("删除路径"); jl3.setBounds(45, 210, 60, 20); this.add(jl3); JTextField tf5 = new JTextField(); tf5.setBounds(110, 210, 220, 20); this.add(tf5); JButton jb4 = new JButton("选择删除路径"); jb4.setBounds(360, 210, 60, 20); this.add(jb4); JLabel jl4 = new JLabel("保存路径"); jl4.setBounds(45, 250, 60, 20); this.add(jl4); JTextField tf6 = new JTextField(); tf6.setBounds(110, 250, 220, 20); this.add(tf6); JButton jb5 = new JButton("选择保存路径"); jb5.setBounds(360, 250, 60, 20); this.add(jb5); JButton jb6 = new JButton("确定"); jb6.setBounds(380, 310, 60, 20); this.add(jb6); JLabel jl5 = new JLabel("保存内容"); jl5.setBounds(45, 290, 60, 20); this.add(jl5); JTextField tf7 = new JTextField(); tf7.setBounds(110, 290, 220, 20); this.add(tf7); ActionListener action_listener = new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub // System.out.println("str1=" + str1); String str = e.getActionCommand(); switch (str) { case "选择复制路径": JFileChooser fileChooser1 = new JFileChooser("C:\\Users\\黄家鹏\\Desktop\\新建文件夹"); fileChooser1.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES); fileChooser1.showDialog(null, "选择"); File selectFile1 = fileChooser1.getSelectedFile(); tf1.setText(selectFile1.getPath()); srcPath = tf1.getText(); destname = selectFile1.getName(); break; case "选择目标路径": JFileChooser fileChooser2 = new JFileChooser("C:\\Users\\黄家鹏\\Desktop\\新建文件夹"); fileChooser2.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES); fileChooser2.showDialog(null, "选择"); File selectFile2 = fileChooser2.getSelectedFile(); tf2.setText(selectFile2.getPath() + "\\" + destname); destPath = tf2.getText(); System.out.println(destPath); break; case "选择删除路径": JFileChooser fileChooser4 = new JFileChooser("C:\\Users\\黄家鹏\\Desktop\\新建文件夹"); fileChooser4.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES); fileChooser4.showDialog(null, "选择"); File selectFile4 = fileChooser4.getSelectedFile(); tf5.setText(selectFile4.getPath()); break; case "选择保存路径": JFileChooser fileChooser5 = new JFileChooser("C:\\Users\\黄家鹏\\Desktop\\新建文件夹"); fileChooser5.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES); fileChooser5.showDialog(null, "选择"); File selectFile5 = fileChooser5.getSelectedFile(); tf6.setText(selectFile5.getPath()); System.out.println(" " + tf6.getText()); System.out.println(" " + tf7.getText()); break; case "确定": System.out.println("destPath=" + destPath); srcKey = tf3.getText(); destKey = tf4.getText(); FileTool.copyFolder(srcPath, destPath, srcKey, destKey); System.out.println("deleteFolder=" + tf5.getText()); FileTool.deleteFolder(tf5.getText()); FileTool.saveFile(tf6.getText(), tf7.getText()); break; } } }; jb1.addActionListener(action_listener); jb2.addActionListener(action_listener); jb4.addActionListener(action_listener); jb5.addActionListener(action_listener); jb6.addActionListener(action_listener); }}
0 0
- IO流文件的复制删除
- 【insigma】IO文件和文件夹的复制、删除、剪切
- 文件的复制io
- 关于java Io流的操作,复制(多个文件)、删除、剪切、下载网络资源
- IO流文件复制
- IO流文件复制
- IO流复制文件
- IO流---文件复制
- io操作文件移动,复制,删除
- io流实现文件的复制
- Java的IO流复制文件
- io流处理复制文件的问题
- IO流实现文件的复制
- IO流(文件复制的方法)
- java学习---------IO流学习---文件流inputstream outputstream(三)实现文件和文件夹的复制 删除
- IO流-文件的拷贝、删除
- Io流,文件复制与文件夹复制
- 《java----IO流---文件复制》
- Android 内存泄漏之handler
- 134. Gas Station
- SLIC超像素分割算法研究(代码可下载)
- 史上最详细最全面的ss-panel部署教程(V3版本)
- nyoj 14 会场安排问题
- IO流文件的复制删除
- R语言常用函数总结大全
- 线线几何位置关系
- 三种常用排序算法(冒泡、选择、快速)的Java实现
- JQueryEasyUI 组件 布局 Layout组件
- codeforces Plant Tree
- 关于我
- Debug调试
- Java子类与父类之间的对象转换