`
z_l_ming
  • 浏览: 11831 次
文章分类
社区版块
存档分类
最新评论

文件夹以以及子文件复制 File copy

    博客分类:
  • java
阅读更多
package aaa;

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.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.WindowConstants;


public class CreateEclipseProject extends JFrame{

private static final long serialVersionUID = 1L;
private JLabel jLabel1;
private JLabel jLabel2;
private JTextField jTextField1;
private JTextField jTextField2;
private JButton jButtonSelect;
private JButton jButtonOk;
private JButton jButtonCancel;
public CreateEclipseProject(final String currentProject){

this.setLayout(null);

jLabel1 = new JLabel("项目名称");
jLabel1.setFont(new java.awt.Font("宋体", 1, 14));
jLabel1.setBounds(30, 40, 80, 30);
this.add(jLabel1);

jTextField1 = new JTextField();
jTextField1.setBounds(110, 40, 260, 30);
this.add(jTextField1);

jLabel2 = new JLabel("生成路径");
jLabel2.setFont(new java.awt.Font("宋体", 1, 14));
jLabel2.setBounds(30, 100, 80, 30);
this.add(jLabel2);

jTextField2 = new JTextField();
jTextField2.setEditable(false);
jTextField2.setBounds(110, 100, 260, 30);
this.add(jTextField2);

jButtonSelect = new JButton("选择");
jButtonSelect.setFont(new java.awt.Font("宋体", 1, 14));
jButtonSelect.setBounds(380, 100, 80, 30);
this.add(jButtonSelect);
jButtonSelect.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
getCreateEclipseProjectPath();
}
});

jButtonOk = new JButton("确定");
jButtonOk.setFont(new java.awt.Font("宋体", 1, 14));
jButtonOk.setBounds(250,200, 80, 30);
this.add(jButtonOk);
jButtonOk.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
boolean isSuccessCreate = createEclipseProject(currentProject,jTextField1.getText(),jTextField2.getText());
if(isSuccessCreate){
JOptionPane.showMessageDialog(null, "项目生成成功", "提示", JOptionPane.INFORMATION_MESSAGE);
}else{
JOptionPane.showMessageDialog(null, "项目生成失败", "提示", JOptionPane.INFORMATION_MESSAGE);
}

setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
}
});

jButtonCancel = new JButton("取消");
jButtonCancel.setFont(new java.awt.Font("宋体", 1, 14));
jButtonCancel.setBounds(380, 200, 80, 30);
this.add(jButtonCancel);
jButtonCancel.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
jTextField1.setText("");
jTextField2.setText("");

}
});

this.setTitle("生成Eclipse项目到指定路径");
this.setBounds(400, 300, 500, 300);
        this.setResizable(false);
        setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
        this.setVisible(true);
}
/*
* 选择项目生成路径
*/
public void getCreateEclipseProjectPath() {

JFileChooser jfc=new JFileChooser();
jfc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
int returnVal = jfc.showOpenDialog(null);
if(returnVal==JFileChooser.APPROVE_OPTION){    //判断窗口是否点的是打�?��保存

String newProject_Name=jfc.getSelectedFile().getName();
    System.out.println(newProject_Name);
    String newProject_Paht=jfc.getSelectedFile().getAbsolutePath();
    System.out.println(newProject_Paht);
    jTextField2.setText(newProject_Paht);
 
   
}else{  // 没有选择,点了取消后要做些什么}
System.out.println("取消或关闭");
}

}

public boolean createEclipseProject(String srcName,String projectName,String projectPath) {

if(projectName.equals("")||projectName == null){
JOptionPane.showMessageDialog(null, "请填写项目名称", "提示", JOptionPane.INFORMATION_MESSAGE);
return false;
}
if(projectPath.equals("")||projectPath == null){
JOptionPane.showMessageDialog(null, "请选择项目路径", "提示", JOptionPane.INFORMATION_MESSAGE);
return false;
}
String createProjectPath=projectPath+"\\"+projectName;
        File file1 = new File(createProjectPath);
        System.out.println(createProjectPath);
        file1.mkdirs();
        File fromfile = new File(System.getProperty("user.dir")+"\\workspace\\"+srcName+"\\project");// 源文件夹  
        File tofile = new File(createProjectPath);// 目标  
 
        CopyDir copy = new CopyDir();  
       // 设置来源去向  
        copy.dirFrom = fromfile;  
        copy.dirTo = tofile;  
        copy.listFileInDir(fromfile);
       
        //文件拷贝成功之后,修改文件
    String filePath = createProjectPath+"\\.project"; // 文件路径
FileModify obj = new FileModify();
obj.PROJECT_NAME=projectName;
obj.write(filePath, obj.read(filePath)); // 读取修改文件

return true;
}
public static void main(String[] args) {
//new CreateEclipseProject(null).createEclipseProject("uum[2.0.3-SNAPSHOT]+jmtc-2.1.1[0.0.1-SNAPSHOT]");
new CreateEclipseProject("uum[2.0.3-SNAPSHOT],jmtc-2.1.1[0.0.1-SNAPSHOT]");
}
}



//==================================================================
package aaa;


/**
* 把一个文件夹里的所有文件包括文件夹 一并原样拷贝到另一个目录中;
*@author shuishui
*/ 
import java.io.File;  
import java.io.FileInputStream;  
import java.io.FileNotFoundException;  
import java.io.FileOutputStream;  
import java.io.IOException;  
import java.io.InputStream;  
import java.io.OutputStream;  
  
public class CopyDir {  
  
    public static File dirFrom;  
    public static File dirTo;  
  
    // 目标路径创建文件夹  
    public void listFileInDir(File file) {  
         File[] files = file.listFiles();  
        for (File f : files) {  
             String tempfrom = f.getAbsolutePath();  
             String tempto = tempfrom.replace(dirFrom.getAbsolutePath(),  
                     dirTo.getAbsolutePath()); // 后面的路径 替换前面的路径名  
            if (f.isDirectory()) {  
                 File tempFile = new File(tempto);  
                 tempFile.mkdirs();  
                 listFileInDir(f);  
             } else {  
                 System.out.println("源文件:" + f.getAbsolutePath());  
                //  
                int endindex = tempto.lastIndexOf("\\");// 找到"/"所在的位置  
                 String mkdirPath = tempto.substring(0, endindex);  
                 File tempFile = new File(mkdirPath);  
                 tempFile.mkdirs();// 创建立文件夹  
                 System.out.println("目标点:" + tempto);  
                 copy(tempfrom, tempto);  
             }  
         }  
     }  
    /**
      * 封装好的文件拷贝方法
      */ 
    public void copy(String from, String to) {  
        try {  
             InputStream in = new FileInputStream(from);  
             OutputStream out = new FileOutputStream(to);  
  
            byte[] buff = new byte[1024];  
            int len = 0;  
            while ((len = in.read(buff)) != -1) {  
                 out.write(buff, 0, len);  
             }  
             in.close();  
             out.close();  
         } catch (FileNotFoundException e) {  
             e.printStackTrace();  
         } catch (IOException e) {  
             e.printStackTrace();  
         }  
     }  
  
    public static void main(String[] args) {  
         File fromfile = new File("D:\\Workspaces\\MyEclipse2014\\workspace1\\AAA");// 源文件夹  
         File tofile = new File("C:\\Users\\Administrator\\Desktop\\JS学习总结\\abc");// 目标  
  
         CopyDir copy = new CopyDir();  
        // 设置来源去向  
         copy.dirFrom = fromfile;  
         copy.dirTo = tofile;  
         copy.listFileInDir(fromfile);  
  
     }  
}
//=========================================================
package aaa;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

/**
* 修改文件
*/
public class FileModify {

public static String PROJECT_NAME;  
/**
* 读取文件内容
*
* @param filePath
* @return
*/
public String read(String filePath) {
BufferedReader br = null;
String line = null;
StringBuffer buf = new StringBuffer();

try {
// 根据文件路径创建缓冲输入流
br = new BufferedReader(new FileReader(filePath));

// 循环读取文件的每一行, 对需要修改的行进行修改, 放入缓冲对象中
while ((line = br.readLine()) != null) {
// 此处根据实际需要修改某些行的内容
if (line.startsWith("\t<name>")) {
line="\t<name>"+this.PROJECT_NAME+"</name>";
buf.append(line);
}

// 如果不用修改, 则按原来的内容回写
else {
buf.append(line);
}
buf.append(System.getProperty("line.separator"));
}
} catch (Exception e) {
e.printStackTrace();
} finally {
// 关闭流
if (br != null) {
try {
br.close();
} catch (IOException e) {
br = null;
}
}
}

return buf.toString();
}

/**
* 将内容回写到文件中
*
* @param filePath
* @param content
*/
public void write(String filePath, String content) {
BufferedWriter bw = null;

try {
// 根据文件路径创建缓冲输出流
bw = new BufferedWriter(new FileWriter(filePath));
// 将内容写入文件中
bw.write(content);
} catch (Exception e) {
e.printStackTrace();
} finally {
// 关闭流
if (bw != null) {
try {
bw.close();
} catch (IOException e) {
bw = null;
}
}
}
}

/**
* 主方法
*/
public static void main(String[] args) {
String filePath = "C:/Users/Administrator/Desktop/JS学习总结/abc/.project"; // 文件路径
FileModify obj = new FileModify();
obj.write(filePath, obj.read(filePath)); // 读取修改文件
}

}[/size][/size][/size]
分享到:
评论

相关推荐

    C#复制文件夹(及文件夹下所有子文件夹和文件)

    ### C#实现文件夹及其子文件夹和文件的复制 在C#开发中,经常会遇到需要复制文件夹及其内部所有子文件夹和文件的需求。这种需求常见于备份系统、文件同步服务或者数据迁移工具等场景。本文将详细介绍如何使用C#来...

    WPF C# 文件夹复制,文件复制

    接着,它获取源目录中的所有文件,并使用`CopyTo`方法将每个文件复制到目标路径。同时,函数还会遍历源目录的所有子目录,对每个子目录递归调用自身,实现整个文件结构的复制。 在WPF应用中,你可以将这个函数封装...

    Copy文件夹下面所有文件

    在本案例中,“Copy文件夹下面所有文件”主要涉及的是将指定文件夹内的所有文件及其子文件夹内的文件复制到另一个位置。 ### 2. C# 中文件与目录操作基础 #### 2.1 DirectoryInfo 类 `DirectoryInfo` 类是 .NET ...

    C#判断一个文件夹内是否存在子文件夹或文件

    2. **复制文件**:遍历源文件夹中的所有文件,并使用`File.Copy()`方法将文件复制到目标位置。 3. **递归处理子目录**:遍历源文件夹中的所有子目录,并对每个子目录递归调用`CopyDirectory`方法。 示例代码如下: ...

    winform 文件操作 WM6.0 c# 遍历文件夹、复制文件、删除文件、复制文件内容

    本教程将详细介绍如何在这样的环境下遍历文件夹、复制文件、删除文件以及复制文件内容。 一、遍历文件夹 在C#中,我们可以使用`System.IO`命名空间下的`DirectoryInfo`类来遍历文件夹。以下是一个简单的示例: ``...

    C#复制文件到指定文件夹

    第四种方法是使用File类的Copy方法和Directory类的CreateDirectory方法来实现文件复制。例如,我们可以使用以下代码来实现文件复制: ```csharp if (!System.IO.Directory.Exists(@"C:\text")) { // 目录不存在,...

    Qt文件或文件夹拷贝

    `copyDirectoryFiles()`函数可能是一个自定义的实现,用于遍历目录并将所有文件及其子目录复制到新的位置。以下是一个简单的递归实现: ```cpp #include #include #include void copyDirectoryFiles(const ...

    java文件夹及文件复制

    在实现文件复制时,我们通常会使用`BufferedInputStream`和`BufferedOutputStream`来提高效率,它们可以一次性读写多个字节,减少磁盘I/O操作的次数。 3. **递归复制文件夹**:当需要复制一个文件夹及其所有子...

    监听文件下文件发生变化时复制文件到另一个文件夹

    因为文件系统监听和文件复制可能涉及I/O操作,这些操作通常是阻塞的,如果在一个线程中执行,可能会阻塞程序的其他部分。为了解决这个问题,我们可以创建一个单独的线程或线程池来处理文件复制。在Python中,可以...

    windows下如何将一个文件一次性复制到许多文件夹中?看这个bat脚本就够了

    )`这部分是一个for循环,它会遍历`folders`变量中的每一个文件夹,并将`src_file`中的文件复制到`%%i`所代表的当前目标文件夹。 `copy %src_file% "%%i"`是实际的复制命令,`%src_file%`是源文件,`"%%i"`则是循环...

    从a文件夹到b文件夹文件复制

    总的来说,"从a文件夹到b文件夹文件复制"是一个典型的文件操作问题,涉及到文件和文件夹的验证、遍历、复制、删除以及在WinForms中的用户交互。理解并掌握这些知识点,对于任何使用C#进行桌面应用开发的程序员来说都...

    PHP 复制文件夹及子文件

    该函数`recurse_copy`用于递归地复制一个文件夹及其所有子文件夹和文件。它接收两个参数:源目录路径(`$src`)和目标目录路径(`$dst`)。如果目标目录不存在,则会自动创建。 #### 二、代码详解 1. **打开目录**...

    java中实现复制文件和文件夹

    需要注意的是,这段代码仅处理了文件和文件夹的深度为1的情况,即只复制指定的源文件夹及其直接子文件夹和文件。如果源文件夹中包含嵌套的子文件夹,这种方法可能无法正确地复制整个文件结构。为了完全复制包括所有...

    复制文件夹以及子文件夹的文件

    以上两种方法都是用来复制包含子文件夹的文件夹,但需要注意的是,它们都需要对文件系统的读写权限。在实际应用中,还应考虑错误处理、权限问题、文件锁以及其他可能遇到的复杂情况。在Windows环境下,`win32_find_...

    遍历文件夹中的路径复制目录文件.rar

    5. **绿盾和天锐**:这两个标签可能指的是特定的安全软件或服务,可能与文件复制操作有关,比如文件加密、安全扫描等。如果应用程序需要在这些环境中运行,可能需要考虑兼容性和安全性问题。 在实际操作中,遍历...

    bat批处理文件实现复制、删除、创建文件夹、执行程序、打开文件

    2、如果想把E:\ 盘上所有文件复制到D:\盘上,分为今天复制一点,明天再接着复制一些,后天再接着复制一些。或者是某种原因上次没有复制完成,今天想接着复制。(这种情况是经常在复制文件中出现的)那可怎么办才好呢...

    Java新建目录、新建文件、删除文件、删除文件夹、删除文件夹里面的所有文件、复制整个文件夹内容

    本文档将详细介绍如何在Java中执行以下操作:新建目录、新建文件、删除文件、删除文件夹、删除文件夹内所有文件以及复制整个文件夹内容。 #### 1. 新建目录 (mkdir) 在Java中创建新目录非常简单,可以使用`java.io...

    C#异步完成文件夹和文件复制

    考虑到文件复制可能涉及大量数据,可以考虑分块读取和写入,以减少内存占用并提高性能。 8. **并发控制** 在多线程环境下,为了防止多个线程同时操作同一文件,可以使用锁或其他并发控制机制。 9. **测试和调试*...

    拷贝某个文件夹及子文件夹下的所有指定文件类型(如jpg)到另一个文件夹下

    - `copy "%%i" "%target%"`:实际执行文件复制操作,将找到的mp3文件复制到目标文件夹。 - `echo All mp3 files copied successfully.`:复制完成后,显示提示信息。 - `pause`:暂停批处理执行,让用户看到结果后再...

    MFC复制文件到指定目录

    如果"abc"代表文件夹,那么你需要遍历该文件夹下的所有文件和子文件夹,并对每个文件执行上述步骤。这涉及到目录枚举和递归调用,可以使用CFileFind类来实现。例如: ```cpp CFileFind finder; LPCTSTR srcDir = _T...

Global site tag (gtag.js) - Google Analytics