(集合)JAVA文件操作--复制、粘贴、删除、剪切
来源:互联网 发布:越南古代服饰淘宝 编辑:程序博客网 时间:2024/06/08 04:37
原文链接:
http://xqjay19910131-yahoo-cn.iteye.com/blog/1294119
package com.file;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;/* * Java实现文件复制、剪切、删除操作 * 文件指文件或文件夹 * 文件分割符统一用"//" */public class FileOperateDemo {/** * 复制文件或文件夹 * * @param srcPath * @param destDir * 目标文件所在的目录 * @return */public static boolean copyGeneralFile(String srcPath, String destDir) {boolean flag = false;File file = new File(srcPath);if (!file.exists()) {System.out.println("源文件或源文件夹不存在!");return false;}if (file.isFile()) { // 源文件System.out.println("下面进行文件复制!");flag = copyFile(srcPath, destDir);} else if (file.isDirectory()) {System.out.println("下面进行文件夹复制!");flag = copyDirectory(srcPath, destDir);}return flag;}/** * 复制文件 * * @param srcPath * 源文件绝对路径 * @param destDir * 目标文件所在目录 * @return boolean */private static boolean copyFile(String srcPath, String destDir) {boolean flag = false;File srcFile = new File(srcPath);if (!srcFile.exists()) { // 源文件不存在System.out.println("源文件不存在");return false;}// 获取待复制文件的文件名String fileName = srcPath.substring(srcPath.lastIndexOf(File.separator));String destPath = destDir + fileName;if (destPath.equals(srcPath)) { // 源文件路径和目标文件路径重复System.out.println("源文件路径和目标文件路径重复!");return false;}File destFile = new File(destPath);if (destFile.exists() && destFile.isFile()) { // 该路径下已经有一个同名文件System.out.println("目标目录下已有同名文件!");return false;}File destFileDir = new File(destDir);destFileDir.mkdirs();try {FileInputStream fis = new FileInputStream(srcPath);FileOutputStream fos = new FileOutputStream(destFile);byte[] buf = new byte[1024];int c;while ((c = fis.read(buf)) != -1) {fos.write(buf, 0, c);}fis.close();fos.close();flag = true;} catch (IOException e) {//}if (flag) {System.out.println("复制文件成功!");}return flag;}/** * * @param srcPath * 源文件夹路径 * @param destPath * 目标文件夹所在目录 * @return */private static boolean copyDirectory(String srcPath, String destDir) {System.out.println("复制文件夹开始!");boolean flag = false;File srcFile = new File(srcPath);if (!srcFile.exists()) { // 源文件夹不存在System.out.println("源文件夹不存在");return false;}// 获得待复制的文件夹的名字,比如待复制的文件夹为"E://dir"则获取的名字为"dir"String dirName = getDirName(srcPath);// 目标文件夹的完整路径String destPath = destDir + File.separator + dirName;// System.out.println("目标文件夹的完整路径为:" + destPath);if (destPath.equals(srcPath)) {System.out.println("目标文件夹与源文件夹重复");return false;}File destDirFile = new File(destPath);if (destDirFile.exists()) { // 目标位置有一个同名文件夹System.out.println("目标位置已有同名文件夹!");return false;}destDirFile.mkdirs(); // 生成目录File[] fileList = srcFile.listFiles(); // 获取源文件夹下的子文件和子文件夹if (fileList.length == 0) { // 如果源文件夹为空目录则直接设置flag为true,这一步非常隐蔽,debug了很久flag = true;} else {for (File temp : fileList) {if (temp.isFile()) { // 文件flag = copyFile(temp.getAbsolutePath(), destPath);} else if (temp.isDirectory()) { // 文件夹flag = copyDirectory(temp.getAbsolutePath(), destPath);}if (!flag) {break;}}}if (flag) {System.out.println("复制文件夹成功!");}return flag;}/** * 获取待复制文件夹的文件夹名 * * @param dir * @return String */private static String getDirName(String dir) {if (dir.endsWith(File.separator)) { // 如果文件夹路径以"//"结尾,则先去除末尾的"//"dir = dir.substring(0, dir.lastIndexOf(File.separator));}return dir.substring(dir.lastIndexOf(File.separator) + 1);}/** * 删除文件或文件夹 * * @param path * 待删除的文件的绝对路径 * @return boolean */public static boolean deleteGeneralFile(String path) {boolean flag = false;File file = new File(path);if (!file.exists()) { // 文件不存在System.out.println("要删除的文件不存在!");}if (file.isDirectory()) { // 如果是目录,则单独处理flag = deleteDirectory(file.getAbsolutePath());} else if (file.isFile()) {flag = deleteFile(file);}if (flag) {System.out.println("删除文件或文件夹成功!");}return flag;}/** * 删除文件 * * @param file * @return boolean */private static boolean deleteFile(File file) {return file.delete();}/** * 删除目录及其下面的所有子文件和子文件夹,注意一个目录下如果还有其他文件或文件夹 * 则直接调用delete方法是不行的,必须待其子文件和子文件夹完全删除了才能够调用delete * * @param path * path为该目录的路径 */private static boolean deleteDirectory(String path) {boolean flag = true;File dirFile = new File(path);if (!dirFile.isDirectory()) {return flag;}File[] files = dirFile.listFiles();for (File file : files) { // 删除该文件夹下的文件和文件夹// Delete file.if (file.isFile()) {flag = deleteFile(file);} else if (file.isDirectory()) {// Delete folderflag = deleteDirectory(file.getAbsolutePath());}if (!flag) { // 只要有一个失败就立刻不再继续break;}}flag = dirFile.delete(); // 删除空目录return flag;}/** * 由上面方法延伸出剪切方法:复制+删除 * * @param destDir * 同上 */public static boolean cutGeneralFile(String srcPath, String destDir) {if (!copyGeneralFile(srcPath, destDir)) {System.out.println("复制失败导致剪切失败!");return false;}if (!deleteGeneralFile(srcPath)) {System.out.println("删除源文件(文件夹)失败导致剪切失败!");return false;}System.out.println("剪切成功!");return true;}public static void main(String[] args) {copyGeneralFile("E://Assemble.txt", "E://New.txt"); // 复制文件copyGeneralFile("E://hello", "E://world"); // 复制文件夹deleteGeneralFile("E://onlinestockdb.sql"); // 删除文件deleteGeneralFile("E://woman"); // 删除文件夹cutGeneralFile("E://hello", "E://world"); // 剪切文件夹cutGeneralFile("E://Difficult.java", "E://Cow//"); // 剪切文件}}
原文链接:
http://blog.csdn.net/baolong47/article/details/6740383
闲来无事,突发奇想,看似简单的ctrl+c 和ctrl+paste 如何用java来实现呢。
当我们桥下键盘的 ctrl+c 和ctrl+paste 时,系统就会往剪贴板存入数据。数据可以是文本,图像,文件等。就像我们把图片粘贴到QQ窗口,就会出现图像。
本文只是一个引子,实现了文本和图像的复制粘贴,但却卡在了文件的复制粘贴上。望能得到高人指点,感激涕零,叩头膜拜~~☺
少说废话,上代码,注释在代码里了。
(一)文本的复制粘贴
- import java.awt.Toolkit;
- import java.awt.datatransfer.Clipboard;
- import java.awt.datatransfer.DataFlavor;
- import java.awt.datatransfer.StringSelection;
- import java.awt.datatransfer.UnsupportedFlavorException;
- import java.io.IOException;
- public class CopyAndPaste {
- public static void main(String[] args) {
- //copy(); //可以 在键盘上 ctrl + v
- paste();
- }
- public static void copy(){
- Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); //得到系统剪贴板
- String text = "这是要拷贝的内容";
- StringSelection selection = new StringSelection(text);
- clipboard.setContents(selection, null);
- }
- public static void paste(){
- Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
- DataFlavor flavor = DataFlavor.stringFlavor;
- if(clipboard.isDataFlavorAvailable(flavor)){//是否符合剪贴板的数据类型
- try {
- System.out.println("此时剪贴版的数据是:" + clipboard.getData(flavor));
- } catch (UnsupportedFlavorException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
- }
(二)图像复制粘贴,做了一个UI,对面板分别有 复制、粘贴、清除图像的操作。
- import java.io.*;
- import java.awt.*;
- import java.awt.datatransfer.*;
- import java.awt.event.*;
- import java.awt.image.*;
- import javax.swing.*;
- public class ImageTransferTest
- {
- public static void main(String[] args)
- {
- EventQueue.invokeLater(new Runnable() //awt线程模式,保证事件处理的稳定性
- {
- public void run()
- {
- JFrame frame = new ImageTransferFrame();
- frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- frame.setVisible(true);
- }
- });
- }
- }
- /**
- * 图像面板
- */
- class ImageTransferFrame extends JFrame
- {
- public ImageTransferFrame()
- {
- setTitle("复制粘贴image"); //标题
- setSize(600, 600);// 长宽
- int screen_width = Toolkit.getDefaultToolkit().getScreenSize().width;
- int screen_height = Toolkit.getDefaultToolkit().getScreenSize().height;
- setLocation((screen_width - getWidth()) / 2,
- (screen_height - getHeight()) / 2); //坐标
- label = new JLabel();
- //绘制图像
- image = new BufferedImage(DEFAULT_WIDTH, DEFAULT_HEIGHT, BufferedImage.TYPE_INT_ARGB);
- Graphics g = image.getGraphics();
- g.setColor(Color.WHITE);
- g.fillRect(0, 0, DEFAULT_WIDTH, DEFAULT_HEIGHT);
- g.setColor(Color.RED);
- g.fillOval(DEFAULT_WIDTH / 4, DEFAULT_WIDTH / 4, DEFAULT_WIDTH / 2, DEFAULT_HEIGHT / 2);
- label.setIcon(new ImageIcon(image));
- add(new JScrollPane(label), BorderLayout.CENTER);
- JPanel panel = new JPanel();
- JButton copyButton = new JButton("Copy");
- panel.add(copyButton);
- copyButton.addActionListener(new ActionListener()
- {
- public void actionPerformed(ActionEvent event)
- {
- copy();//复制
- }
- });
- JButton pasteButton = new JButton("Paste");
- panel.add(pasteButton);
- pasteButton.addActionListener(new ActionListener()
- {
- public void actionPerformed(ActionEvent event)
- {
- paste(); //粘贴
- }
- });
- JButton clearButton = new JButton("clear");
- panel.add(clearButton);
- clearButton.addActionListener(new ActionListener()
- {
- public void actionPerformed(ActionEvent event)
- {
- clear(); //清除
- }
- });
- add(panel, BorderLayout.SOUTH);
- }
- public void clear(){
- label.setIcon(null);
- }
- /**
- * 复制图像到系统的剪贴板
- */
- private void copy()
- {
- Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); //得到系统剪贴板
- ImageTransferable selection = new ImageTransferable(image); //图像通道
- clipboard.setContents(selection, null);
- }
- /**
- * 粘贴图像到系统的剪贴板
- */
- private void paste()
- {
- Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); //得到系统剪贴板
- DataFlavor flavor = DataFlavor.imageFlavor; //得到数据
- if (clipboard.isDataFlavorAvailable(flavor)) //判断剪贴板是否支持 复制的数据类型
- {
- try
- {
- image = (Image) clipboard.getData(flavor);
- label.setIcon(new ImageIcon(image));
- }
- catch (UnsupportedFlavorException exception)
- {
- JOptionPane.showMessageDialog(this, exception);
- }
- catch (IOException exception)
- {
- JOptionPane.showMessageDialog(this, exception);
- }
- }
- }
- private JLabel label;
- private Image image;
- private static final int DEFAULT_WIDTH = 600;
- private static final int DEFAULT_HEIGHT = 600;
- }
- /**
- * 实现图像通信的管道接口.
- */
- class ImageTransferable implements Transferable
- {
- public ImageTransferable(Image image)
- {
- theImage = image;
- }
- public DataFlavor[] getTransferDataFlavors()
- {
- return new DataFlavor[] { DataFlavor.imageFlavor };
- }
- public boolean isDataFlavorSupported(DataFlavor flavor)
- {
- return flavor.equals(DataFlavor.imageFlavor);
- }
- public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException
- {
- if (flavor.equals(DataFlavor.imageFlavor))
- {
- return theImage;
- }
- else
- {
- throw new UnsupportedFlavorException(flavor);
- }
- }
- private Image theImage;
- }
0 0
- (集合)JAVA文件操作--复制、粘贴、删除、剪切
- java复制,剪切,删除文件操作
- 实现文件复制、剪切、删除操作 Java
- java操作文件(创建、删除、复制、剪切)
- JAVA操作文件(创建、删除、复制、剪切)
- Linux文件剪切复制粘贴
- 复制 剪切 删除 文件
- vim 复制/剪切/粘贴/撤销操作
- js中粘贴、复制、剪切操作汇总
- 关于java Io流的操作,复制(多个文件)、删除、剪切、下载网络资源
- 文件和文件夹操作(复制,剪切,删除)
- Linux文件操作命令(创建、复制、剪切、删除)
- python之文件操作-复制、剪切、删除等
- java中文件复制,删除,剪切等操作
- 关于文件操作的那些趣味小知识之(剪切、移动和复制粘贴)
- java对文件新建,删除,复制,剪切,重命名
- android 复制、剪切、粘贴
- android 复制、剪切、粘贴
- LeetCode——String to Integer (atoi)
- double long float类型读入读出 double取模 fmod
- 【LeetCode with Python】 Binary Tree Level Order Traversal II
- Cocos2d-iPhone V3 (2) 场景转换
- PHP环境搭建:Windows7系统配置PHP+Apache+MySQL环境教程
- (集合)JAVA文件操作--复制、粘贴、删除、剪切
- 【Nutch2.2.1基础教程之2.1】集成Nutch/Hbase/Solr构建搜索引擎之一:安装及运行【单机环境】
- 人工智能传奇——关于AI起源与发展的故事
- OpenVPN多实例优化的思考过程
- 用python 爬取网页图片
- linux下获取系统当前时间
- Java连接HBASE数据库
- 字符串的部分库函数的实现
- Oracle索引聚簇表的数据加载的创建