DeleteFile()或File.Delete()或Kill()

时间:2019-09-25 16:22:23

标签: vb.net

我正在将一些代码从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中删除特定文件的最佳做法是什么?

1 个答案:

答案 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