Operaciones del sistema de archivos en Data Lake Storage Gen1 mediante el SDK de .NET
En este artículo, aprenderá a realizar operaciones del sistema de archivos en Data Lake Storage Gen1 mediante el SDK de .NET. Las operaciones de sistema de archivos incluyen, por ejemplo, la creación de carpetas en una cuenta de Data Lake Storage Gen1 o la carga y descarga de archivos.
Para instrucciones sobre cómo realizar operaciones de administración de cuentas en Data Lake Storage Gen1 mediante el SDK de .NET, consulte Operaciones de administración de cuentas en Data Lake Storage Gen1 con el SDK de .NET.
Prerrequisitos
Visual Studio 2013 o superior. En las instrucciones de este artículo se usa Visual Studio 2019.
Una suscripción de Azure. Consulte Obtención de una versión de evaluación gratuita.
Cuenta de Azure Data Lake Storage Gen1. Para obtener instrucciones sobre cómo crear una cuenta, consulte Introducción a Azure Data Lake Storage Gen1.
Creación de una aplicación .NET
El ejemplo de código disponible en GitHub le guía a través del proceso de creación de archivos en el almacén, concatenación de archivos, descarga de un archivo y eliminación de algunos archivos en el almacén. Esta sección del artículo le guía a través de las principales partes del código.
En Visual Studio, en el menú Archivo, seleccione Nuevo y, a continuación, Proyecto.
Elija Aplicación de consola (.NET Framework) y, a continuación, seleccione Siguiente.
En el nombre del proyecto, escriba
CreateADLApplication
y, a continuación, seleccione Crear.Agregue los paquetes NuGet al proyecto.
Haga clic con el botón derecho en el Explorador de soluciones y haga clic en Administrar paquetes de NuGet.
En la pestaña Administrador de paquetes NuGet, asegúrese de que el Origen del paquete esté establecido en nuget.org. Asegúrese de que la casilla Incluir versión preliminar esté activada.
Busque e instale los siguientes paquetes NuGet:
-
Microsoft.Azure.DataLake.Store
Este artículo se usa v 1.0.0. -
Microsoft.Rest.ClientRuntime.Azure.Authentication
Este artículo se usa v2.3.1.
Cierre el Administrador de paquetes NuGet.
-
Abra Program.cs, elimine el código existente e incluya las siguientes instrucciones para agregar referencias a espacios de nombres.
using System; using System.IO;using System.Threading; using System.Linq; using System.Text; using System.Collections.Generic; using System.Security.Cryptography.X509Certificates; // Required only if you're using an Azure AD application created with certificates using Microsoft.Rest; using Microsoft.Rest.Azure.Authentication; using Microsoft.Azure.DataLake.Store; using Microsoft.IdentityModel.Clients.ActiveDirectory;
Declare las variables como se indica a continuación y proporcione los valores de los marcadores de posición. Además, asegúrese de que la ruta de acceso local y el nombre de archivo que proporciona existen en el equipo.
namespace SdkSample { class Program { private static string _adlsg1AccountName = "<DATA-LAKE-STORAGE-GEN1-NAME>.azuredatalakestore.net"; } }
En las secciones restantes del artículo, puede ver cómo usar los métodos de .NET disponibles para realizar operaciones como la autenticación, la carga de archivos, etc.
Authentication
- Para la autenticación del usuario final para la aplicación, consulte End-user authentication with Data Lake Storage Gen1 using .NET SDK (Autenticación del usuario final con Data Lake Storage Gen1 mediante el SDK de .NET).
- Para la autenticación entre servicios para la aplicación, consulte Service-to-service authentication with Data Lake Storage Gen1 using .NET SDK (Autenticación entre servicios con Data Lake Storage Gen1 mediante el SDK de .NET).
Creación del objeto de cliente
El fragmento de código siguiente crea los objetos de cliente del sistema de archivos de Data Lake Storage Gen1, que se usan para emitir solicitudes al servicio.
// Create client objects
AdlsClient client = AdlsClient.CreateClient(_adlsg1AccountName, adlCreds);
Creación de un archivo y un directorio
Agregue el siguiente fragmento de código a su aplicación. Este fragmento de código agrega un archivo y cualquier directorio primario que no exista.
// Create a file - automatically creates any parent directories that don't exist
// The AdlsOutputStream preserves record boundaries - it does not break records while writing to the store
using (var stream = client.CreateFile(fileName, IfExists.Overwrite))
{
byte[] textByteArray = Encoding.UTF8.GetBytes("This is test data to write.\r\n");
stream.Write(textByteArray, 0, textByteArray.Length);
textByteArray = Encoding.UTF8.GetBytes("This is the second line.\r\n");
stream.Write(textByteArray, 0, textByteArray.Length);
}
Anexión a un archivo
El fragmento de código siguiente anexa datos a un archivo existente en la cuenta de Data Lake Storage Gen1.
// Append to existing file
using (var stream = client.GetAppendStream(fileName))
{
byte[] textByteArray = Encoding.UTF8.GetBytes("This is the added line.\r\n");
stream.Write(textByteArray, 0, textByteArray.Length);
}
Lectura de un archivo
El fragmento de código siguiente lee el contenido de un archivo en Data Lake Storage Gen1.
//Read file contents
using (var readStream = new StreamReader(client.GetReadStream(fileName)))
{
string line;
while ((line = readStream.ReadLine()) != null)
{
Console.WriteLine(line);
}
}
Obtención de las propiedades del archivo
El fragmento de código siguiente devuelve las propiedades asociadas a un archivo o un directorio.
// Get file properties
var directoryEntry = client.GetDirectoryEntry(fileName);
PrintDirectoryEntry(directoryEntry);
La definición del método PrintDirectoryEntry
está disponible como parte del ejemplo en GitHub.
Cambio del nombre de un archivo
El fragmento de código siguiente cambia el nombre de un archivo existente en una cuenta de Data Lake Storage Gen1.
// Rename a file
string destFilePath = "/Test/testRenameDest3.txt";
client.Rename(fileName, destFilePath, true);
Enumeración de un directorio
El fragmento de código siguiente enumera los directorios en una cuenta de Data Lake Storage Gen1.
// Enumerate directory
foreach (var entry in client.EnumerateDirectory("/Test"))
{
PrintDirectoryEntry(entry);
}
La definición del método PrintDirectoryEntry
está disponible como parte del ejemplo en GitHub.
Eliminación de directorios de forma recursiva
El fragmento de código siguiente elimina un directorio y todos sus subdirectorios, de forma recursiva.
// Delete a directory and all its subdirectories and files
client.DeleteRecursive("/Test");
Ejemplos
Estos son algunos ejemplos que muestran cómo usar el SDK del sistema de archivos Data Lake Storage Gen1.
Consulte también
- Operaciones de administración de cuentas en Data Lake Storage Gen1 con el SDK de .NET
- Data Lake Storage Gen1 .NET SDK Reference (Referencia del SDK de .NET de Data Lake Storage Gen1)