src/DotNetCommon.Core/Extensions/FileAndDirectoryInfoExtensions.cs
(开头部分) 8KB这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。
namespace DotNetCommon.Extensions
{
using DotNetCommon;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Text;
/// <summary>
/// <see cref="FileInfo"/> 和 <see cref="DirectoryInfo"/>的扩展类
/// </summary>
public static class FileAndDirectoryInfoExtensions
{
private const int DefaultBufferSize = 4096;
private const char CarriageReturn = '\r';
private const char NewLine = '\n';
private const char Tab = '\t';
/// <summary>
/// 获取当前文件夹的大小(单位:B,包含子文件夹)
/// </summary>
public static long GetSizeInBytes(this DirectoryInfo directoryInfo)
{
var length = directoryInfo.GetFiles().AsParallel().Sum(file => file.Exists ? file.Length : 0);
length += directoryInfo.GetDirectories().Sum(dir => dir.Exists ? dir.GetSizeInBytes() : 0);
return length;
}
/// <summary>
/// 获取当前文件夹的大小(人类易读的)
/// </summary>
public static string GetSizeInHumanize(this DirectoryInfo directoryInfo)
{
var length = GetSizeInBytes(directoryInfo);
return UnitConverter.Humanize(length);
}
/// <summary>
/// 判断当前文件夹是否是隐藏的
/// </summary>
public static bool IsHidden(this DirectoryInfo directoryInfo) => (directoryInfo.Attributes & FileAttributes.Hidden) != 0;
/// <summary>
/// 判断当前文件是否是隐藏的
/// </summary>
public static bool IsHidden(this FileInfo fileInfo) => (fileInfo.Attributes & FileAttributes.Hidden) != 0;
/// <summary>
/// 将当前文件重命名为 <paramref name="newName"/> 并返回新的文件<see cref="FileInfo"/>.
/// </summary>
public static FileInfo Rename(this FileInfo fileInfo, string newName)
{
Ensure.NotNull(fileInfo, nameof(fileInfo));
Ensure.Exists(fileInfo);
Ensure.NotNullOrEmptyOrWhiteSpace(newName);
Ensure.That(newName.IsValidFileName(), $"Invalid file name: '{newName}'");
后面还有 155 行代码,解锁后查看完整代码
24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明
AI 解读
登录后可用,每次 10 积分,解读结果公开显示在下面。
还没有人解读过这个文件。
