3 The file is used to provides interfaces for file operations
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
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.
15 package org
.tianocore
.frameworkwizard
.common
;
18 import java
.io
.FileInputStream
;
19 import java
.io
.FileOutputStream
;
20 import java
.io
.InputStream
;
22 public class FileOperation
{
30 public static void main(String
[] args
) throws Exception
{
31 FileOperation
.newFolder("C:\\aaa\\aaa\\aaa\\aaa\\aaa");
37 @param folderPath The folder path to be created
41 public static void newFolder(String folderPath
) throws Exception
{
42 folderPath
= Tools
.convertPathToCurrentOsType(folderPath
);
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
= Tools
.addFileSeparator(temp
);
49 folderPath
= folderPath
.substring(folderPath
.indexOf(DataType
.FILE_SEPARATOR
) + DataType
.FILE_SEPARATOR
.length());
52 temp
= Tools
.addFileSeparator(temp
);
53 folderPath
= folderPath
.substring(folderPath
.indexOf(DataType
.FILE_SEPARATOR
) + DataType
.FILE_SEPARATOR
.length());
55 temp
= Tools
.addFileSeparator(temp
) + folderPath
;
58 File f
= new File(temp
);
68 @param filePath The file path to be deleted
72 public static void delFile(String filePath
) throws Exception
{
73 File f
= new File(filePath
);
80 Delete a folder and all its files
82 @param filePath The name of the folder which need be deleted
86 public static void delFolder(String filePath
) throws Exception
{
87 File f
= new File(filePath
);
91 if (!f
.isDirectory()) {
98 Delete a folder and all its files
100 @param fleFolderName The name of the folder which need be deleted
102 @retval true - Delete successfully
103 @retval false - Delete successfully
106 private static boolean delFolder(File fileName
) throws Exception
{
107 boolean blnIsDeleted
= true;
109 File
[] aryAllFiles
= fileName
.listFiles();
111 for (int indexI
= 0; indexI
< aryAllFiles
.length
; indexI
++) {
113 if (aryAllFiles
[indexI
].isDirectory()) {
115 //If is a directory, recursively call this function to delete sub folders
117 blnIsDeleted
= delFolder(aryAllFiles
[indexI
]);
118 } else if (aryAllFiles
[indexI
].isFile()) {
120 //If is a file, delete it
122 if (!aryAllFiles
[indexI
].delete()) {
123 blnIsDeleted
= false;
142 public static void copyFile(String oldPath
, String newPath
) throws Exception
{
143 oldPath
= Tools
.convertPathToCurrentOsType(oldPath
);
144 newPath
= Tools
.convertPathToCurrentOsType(newPath
);
147 File oldFile
= new File(oldPath
);
149 File newFile
= new File(Tools
.getFilePathOnly(newPath
));
150 if (!newFile
.exists()) {
151 newFolder(Tools
.getFilePathOnly(newPath
));
154 if (oldFile
.exists()) {
155 InputStream is
= new FileInputStream(oldPath
);
156 FileOutputStream fos
= new FileOutputStream(newPath
);
157 byte[] buffer
= new byte[1024];
159 while ((byteCount
= is
.read(buffer
)) != -1) {
160 fos
.write(buffer
, 0, byteCount
);
175 public static void copyFolder(String oldPath
, String newPath
) throws Exception
{
176 File oldFile
= new File(oldPath
);
179 // Create new file path first
183 String
[] files
= oldFile
.list();
185 for (int index
= 0; index
< files
.length
; index
++) {
186 if (oldPath
.endsWith(DataType
.FILE_SEPARATOR
)) {
187 temp
= new File(oldPath
+ files
[index
]);
189 temp
= new File(oldPath
+ DataType
.FILE_SEPARATOR
+ files
[index
]);
193 FileInputStream fis
= new FileInputStream(temp
);
194 FileOutputStream fos
= new FileOutputStream(newPath
+ DataType
.FILE_SEPARATOR
195 + (temp
.getName()).toString());
196 byte[] b
= new byte[1024 * 5];
198 while ((len
= fis
.read(b
)) != -1) {
199 fos
.write(b
, 0, len
);
205 if (temp
.isDirectory()) {
206 copyFolder(oldPath
+ DataType
.FILE_SEPARATOR
+ files
[index
], newPath
+ DataType
.FILE_SEPARATOR