]>
git.proxmox.com Git - mirror_edk2.git/blob - Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/common/FileOperation.java
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\\bbb\\ccc\\ddd\\eee");
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
= temp
+ DataType
.FILE_SEPARATOR
;
49 folderPath
= folderPath
.substring(folderPath
.indexOf(DataType
.FILE_SEPARATOR
) + DataType
.FILE_SEPARATOR
.length());
52 temp
= temp
+ DataType
.FILE_SEPARATOR
;
53 folderPath
= folderPath
.substring(folderPath
.indexOf(DataType
.FILE_SEPARATOR
) + DataType
.FILE_SEPARATOR
.length());
55 temp
= temp
+ DataType
.FILE_SEPARATOR
+ 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
{
144 File oldFile
= new File(oldPath
);
146 if (oldFile
.exists()) {
147 InputStream is
= new FileInputStream(oldPath
);
148 FileOutputStream fos
= new FileOutputStream(newPath
);
149 byte[] buffer
= new byte[1024];
151 while ((byteCount
= is
.read(buffer
)) != -1) {
152 fos
.write(buffer
, 0, byteCount
);
167 public static void copyFolder(String oldPath
, String newPath
) throws Exception
{
168 File oldFile
= new File(oldPath
);
171 // Create new file path first
175 String
[] files
= oldFile
.list();
177 for (int index
= 0; index
< files
.length
; index
++) {
178 if (oldPath
.endsWith(DataType
.FILE_SEPARATOR
)) {
179 temp
= new File(oldPath
+ files
[index
]);
181 temp
= new File(oldPath
+ DataType
.FILE_SEPARATOR
+ files
[index
]);
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];
190 while ((len
= fis
.read(b
)) != -1) {
191 fos
.write(b
, 0, len
);
197 if (temp
.isDirectory()) {
198 copyFolder(oldPath
+ DataType
.FILE_SEPARATOR
+ files
[index
], newPath
+ DataType
.FILE_SEPARATOR