]> git.proxmox.com Git - mirror_edk2.git/blob - Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/common/FileOperation.java
21d6cfa596543e3358ee6ce8d0da4aa8b570ce51
[mirror_edk2.git] / Tools / Source / FrameworkWizard / src / org / tianocore / frameworkwizard / common / FileOperation.java
1 /** @file
2
3 The file is used to provides interfaces for file operations
4
5 Copyright (c) 2006, Intel Corporation
6 All rights reserved. This program and the accompanying materials
7 are licensed and made available under the terms and conditions of the BSD License
8 which accompanies this distribution. The full text of the license may be found at
9 http://opensource.org/licenses/bsd-license.php
10
11 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
12 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
13
14 **/
15 package org.tianocore.frameworkwizard.common;
16
17 import java.io.File;
18 import java.io.FileInputStream;
19 import java.io.FileOutputStream;
20 import java.io.InputStream;
21
22 public class FileOperation {
23
24 /**
25
26 @param args
27 * @throws Exception
28
29 **/
30 public static void main(String[] args) throws Exception {
31 FileOperation.newFolder("C:\\aaa\\bbb\\ccc\\ddd\\eee");
32 }
33
34 /**
35 To new a folder
36
37 @param folderPath The folder path to be created
38 @throws Exception
39
40 **/
41 public static void newFolder(String folderPath) throws Exception {
42 folderPath = Tools.convertPathToCurrentOsType(folderPath);
43 String temp = "";
44 while (folderPath.length() > 0) {
45 if (folderPath.indexOf(DataType.FILE_SEPARATOR) > -1) {
46 temp = temp + folderPath.substring(0, folderPath.indexOf(DataType.FILE_SEPARATOR));
47 if (temp.endsWith(":")) {
48 temp = temp + DataType.FILE_SEPARATOR;
49 folderPath = folderPath.substring(folderPath.indexOf(DataType.FILE_SEPARATOR) + DataType.FILE_SEPARATOR.length());
50 continue;
51 }
52 temp = temp + DataType.FILE_SEPARATOR;
53 folderPath = folderPath.substring(folderPath.indexOf(DataType.FILE_SEPARATOR) + DataType.FILE_SEPARATOR.length());
54 } else {
55 temp = temp + DataType.FILE_SEPARATOR + folderPath;
56 folderPath = "";
57 }
58 File f = new File(temp);
59 if (!f.exists()) {
60 f.mkdir();
61 }
62 }
63 }
64
65 /**
66 Delete a file
67
68 @param filePath The file path to be deleted
69 @throws Exception
70
71 **/
72 public static void delFile(String filePath) throws Exception {
73 File f = new File(filePath);
74 if (f.exists()) {
75 f.delete();
76 }
77 }
78
79 /**
80 Delete a folder and all its files
81
82 @param filePath The name of the folder which need be deleted
83 @throws Exception
84
85 **/
86 public static void delFolder(String filePath) throws Exception {
87 File f = new File(filePath);
88 if (!f.exists()) {
89 return;
90 }
91 if (!f.isDirectory()) {
92 return;
93 }
94 delFolder(f);
95 }
96
97 /**
98 Delete a folder and all its files
99
100 @param fleFolderName The name of the folder which need be deleted
101
102 @retval true - Delete successfully
103 @retval false - Delete successfully
104
105 **/
106 private static boolean delFolder(File fileName) throws Exception {
107 boolean blnIsDeleted = true;
108
109 File[] aryAllFiles = fileName.listFiles();
110
111 for (int indexI = 0; indexI < aryAllFiles.length; indexI++) {
112 if (blnIsDeleted) {
113 if (aryAllFiles[indexI].isDirectory()) {
114 //
115 //If is a directory, recursively call this function to delete sub folders
116 //
117 blnIsDeleted = delFolder(aryAllFiles[indexI]);
118 } else if (aryAllFiles[indexI].isFile()) {
119 //
120 //If is a file, delete it
121 //
122 if (!aryAllFiles[indexI].delete()) {
123 blnIsDeleted = false;
124 }
125 }
126 }
127 }
128 if (blnIsDeleted) {
129 fileName.delete();
130 }
131 return blnIsDeleted;
132 }
133
134 /**
135 Copy a file
136
137 @param oldPath
138 @param newPath
139 @throws Exception
140
141 **/
142 public static void copyFile(String oldPath, String newPath) throws Exception {
143 int byteCount = 0;
144 File oldFile = new File(oldPath);
145
146 if (oldFile.exists()) {
147 InputStream is = new FileInputStream(oldPath);
148 FileOutputStream fos = new FileOutputStream(newPath);
149 byte[] buffer = new byte[1024];
150
151 while ((byteCount = is.read(buffer)) != -1) {
152 fos.write(buffer, 0, byteCount);
153 }
154
155 is.close();
156 }
157 }
158
159 /**
160 Copy a folder
161
162 @param oldPath
163 @param newPath
164 @throws Exception
165
166 **/
167 public static void copyFolder(String oldPath, String newPath) throws Exception {
168 File oldFile = new File(oldPath);
169
170 //
171 // Create new file path first
172 //
173 newFolder(newPath);
174
175 String[] files = oldFile.list();
176 File temp = null;
177 for (int index = 0; index < files.length; index++) {
178 if (oldPath.endsWith(DataType.FILE_SEPARATOR)) {
179 temp = new File(oldPath + files[index]);
180 } else {
181 temp = new File(oldPath + DataType.FILE_SEPARATOR + files[index]);
182 }
183
184 if (temp.isFile()) {
185 FileInputStream fis = new FileInputStream(temp);
186 FileOutputStream fos = new FileOutputStream(newPath + DataType.FILE_SEPARATOR
187 + (temp.getName()).toString());
188 byte[] b = new byte[1024 * 5];
189 int len;
190 while ((len = fis.read(b)) != -1) {
191 fos.write(b, 0, len);
192 }
193 fos.flush();
194 fos.close();
195 fis.close();
196 }
197 if (temp.isDirectory()) {
198 copyFolder(oldPath + DataType.FILE_SEPARATOR + files[index], newPath + DataType.FILE_SEPARATOR
199 + files[index]);
200 }
201 }
202 }
203 }