我正在将一些代码从VBA迁移到VB.net,而我只停留在一件简单的事情上。如何删除文件。 有人可以解释这三种方法之间的区别吗?
import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';
@Component({
selector: 'app-upload-button',
templateUrl: './upload-button.component.html',
styleUrls: ['./upload-button.component.css']
})
export class UploadButtonComponent implements OnInit {
@Input() accept: string;
@Output() loadend: EventEmitter<void>;
file: File;
fileData: string;
constructor() {
this.loadend = new EventEmitter();
}
ngOnInit() {
if (this.accept === undefined) {
this.accept = '*';
}
}
readFile(): void {
const reader = new FileReader();
reader.onloadend = (event: any) => {
this.fileData = event.target.result;
this.loadend.emit();
};
reader.readAsDataURL(this.file);
}
onChange(event: any): void {
this.file = event.target.files[0];
this.readFile();
}
}
我只需要删除文件夹中的所有特定文件类型。在VBA中,我使用了FileSystem.Kill,通过这种方法,我不必遍历所有文件,我可以使用
删除所有特定文件My.Computer.FileSystem.DeleteFile("D:\file.xls")
System.IO.File.Delete("D:\file.xls")
FileSystem.Kill("D:\file.xls")
在VB.net中删除特定文件的最佳做法是什么?
答案 0 :(得分:2)
第一个选项和第二个选项实际上是相同的,因为My
名称空间只是别名别名(在本例中为System.IO.File
)。
考虑到这一点,我更喜欢第二种选择,因为它在整个环境中更具可移植性(我曾在多个地方将VB.Net的使用与其他.Net语言(例如C#或F#)混合使用,具有My
命名空间)。
我避免使用vb6-era API,但目前暂时没有任何问题。尽管如此,鉴于与以前相同的混合环境问题,我倾向于编写如下代码:
Dim dir As New DirectoryInfo("D:\");
For Each file As FileInfo In dir.EnumerateFiles("*.xls")
file.Delete()
Next
或者这个:
For Each fileName As String In Directory.EnumerateFiles("D:\", "*.xls")
File.Delete(fileName)
Next