ZipFile.CreateFromDirectory Metodo
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Crea un archivio ZIP che contiene i file e le directory della directory specificata.
CreateFromDirectory(String, Stream) |
Crea un archivio ZIP nel flusso specificato che contiene i file e le directory dalla directory specificata. |
CreateFromDirectory(String, String) |
Crea un archivio ZIP che contiene i file e le directory della directory specificata. |
CreateFromDirectory(String, Stream, CompressionLevel, Boolean) |
Crea un archivio ZIP nel flusso specificato che contiene i file e le directory della directory specificata, usa il livello di compressione specificato e, facoltativamente, include la directory di base. |
CreateFromDirectory(String, String, CompressionLevel, Boolean) |
Crea un archivio ZIP che contiene i file e le directory della directory specificata, usa il livello di compressione specificato e facoltativamente include la directory di base. |
CreateFromDirectory(String, Stream, CompressionLevel, Boolean, Encoding) |
Crea un archivio ZIP nel flusso specificato che contiene i file e le directory della directory specificata, usa il livello di compressione e la codifica dei caratteri specificati per i nomi delle voci e, facoltativamente, include la directory di base. |
CreateFromDirectory(String, String, CompressionLevel, Boolean, Encoding) |
Crea un archivio ZIP che contiene i file e le directory della directory specificata, usa il livello di compressione e la codifica caratteri specificati per i nomi di voce e facoltativamente include la directory di base. |
- Origine:
- ZipFile.Create.cs
- Origine:
- ZipFile.Create.cs
Crea un archivio ZIP nel flusso specificato che contiene i file e le directory dalla directory specificata.
public:
static void CreateFromDirectory(System::String ^ sourceDirectoryName, System::IO::Stream ^ destination);
public static void CreateFromDirectory (string sourceDirectoryName, System.IO.Stream destination);
static member CreateFromDirectory : string * System.IO.Stream -> unit
Public Shared Sub CreateFromDirectory (sourceDirectoryName As String, destination As Stream)
Parametri
- sourceDirectoryName
- String
Percorso della directory da archiviare, specificato come percorso relativo o assoluto. Un percorso relativo è interpretato rispetto alla directory di lavoro corrente.
- destination
- Stream
Flusso in cui archiviare l'archivio ZIP.
Eccezioni
sourceDirectoryName
è Empty, contiene solo spazi vuoti oppure contiene almeno un carattere non valido.
-oppure-
Il destination
flusso non supporta la scrittura.
sourceDirectoryName
o destination
è null
.
Nel sourceDirectoryName
percorso specificato, il nome del file o entrambi superano la lunghezza massima definita dal sistema.
sourceDirectoryName
non è valido o non esiste, poiché, ad esempio, si trova su un'unità non mappata.
Impossibile aprire un file nella directory specificata.
-oppure-
Si è verificato un errore di I/O durante l'apertura di un file da archiviare.
sourceDirectoryName
o contiene un formato non valido.
Commenti
La struttura di directory del file system viene mantenuta nell'archivio. Se la directory è vuota, viene creato un archivio vuoto. Questo overload del metodo non include la directory di base nell'archivio e non consente di specificare un livello di compressione. Se si vuole includere la directory di base o specificare un livello di compressione, chiamare l'overload del CreateFromDirectory(String, Stream, CompressionLevel, Boolean) metodo. Se non è possibile aggiungere un file nella directory all'archivio, l'archivio viene lasciato incompleto e non valido e il metodo genera un'eccezione IOException .
Si applica a
.NET 9 e .NET 8
Prodotto | Versioni |
---|---|
.NET | 8, 9 |
- Origine:
- ZipFile.Create.cs
- Origine:
- ZipFile.Create.cs
- Origine:
- ZipFile.Create.cs
Crea un archivio ZIP che contiene i file e le directory della directory specificata.
public:
static void CreateFromDirectory(System::String ^ sourceDirectoryName, System::String ^ destinationArchiveFileName);
public static void CreateFromDirectory (string sourceDirectoryName, string destinationArchiveFileName);
static member CreateFromDirectory : string * string -> unit
Public Shared Sub CreateFromDirectory (sourceDirectoryName As String, destinationArchiveFileName As String)
Parametri
- sourceDirectoryName
- String
Percorso della directory da archiviare, specificato come percorso relativo o assoluto. Un percorso relativo è interpretato rispetto alla directory di lavoro corrente.
- destinationArchiveFileName
- String
Percorso dell'archivio da creare, specificato come percorso relativo o assoluto. Un percorso relativo è interpretato rispetto alla directory di lavoro corrente.
Eccezioni
sourceDirectoryName
o destinationArchiveFileName
è Empty, contiene solo spazi vuoti oppure almeno un carattere non valido.
sourceDirectoryName
o destinationArchiveFileName
è null
.
In sourceDirectoryName
o destinationArchiveFileName
, il percorso, il nome file o entrambi superano la lunghezza massima definita dal sistema.
sourceDirectoryName
non è valido o non esiste, poiché, ad esempio, si trova su un'unità non mappata.
destinationArchiveFileName
esiste già.
-oppure-
Impossibile aprire un file nella directory specificata.
-oppure-
Si è verificato un errore di I/O durante l'apertura di un file da archiviare.
destinationArchiveFileName
specifica una directory.
-oppure-
Il chiamante non dispone dell'autorizzazione richiesta per accedere alla directory specificata in sourceDirectoryName
o al al file specificato in destinationArchiveFileName
.
sourceDirectoryName
o destinationArchiveFileName
contiene un formato non valido.
-oppure-
L'archivio ZIP non supporta la scrittura.
Esempio
In questo esempio viene illustrato come creare ed estrarre un archivio ZIP usando la ZipFile classe . Comprime il contenuto di una cartella in un archivio ZIP e quindi estrae il contenuto in una nuova cartella. Per usare la classe ZipFile, è necessario referenziare l'assembly System.IO.Compression.FileSystem
nel progetto.
using System;
using System.IO.Compression;
class Program
{
static void Main(string[] args)
{
string startPath = @".\start";
string zipPath = @".\result.zip";
string extractPath = @".\extract";
ZipFile.CreateFromDirectory(startPath, zipPath);
ZipFile.ExtractToDirectory(zipPath, extractPath);
}
}
open System.IO.Compression
let startPath = @".\start"
let zipPath = @".\result.zip"
let extractPath = @".\extract"
ZipFile.CreateFromDirectory(startPath, zipPath)
ZipFile.ExtractToDirectory(zipPath, extractPath)
Imports System.IO.Compression
Module Module1
Sub Main()
Dim startPath As String = ".\start"
Dim zipPath As String = ".\result.zip"
Dim extractPath As String = ".\extract"
ZipFile.CreateFromDirectory(startPath, zipPath)
ZipFile.ExtractToDirectory(zipPath, extractPath)
End Sub
End Module
Commenti
La struttura di directory del file system viene mantenuta nell'archivio. Se la directory è vuota, viene creato un archivio vuoto. Questo overload del metodo non include la directory di base nell'archivio e non consente di specificare un livello di compressione. Se si vuole includere la directory di base o specificare un livello di compressione, chiamare l'overload del CreateFromDirectory(String, String, CompressionLevel, Boolean) metodo.
Se l'archivio esiste già, viene generata un'eccezione IOException . Se esiste già una voce con il nome specificato nell'archivio, viene creata una seconda voce con un nome identico.
Se non è possibile aggiungere un file nella directory all'archivio, l'archivio viene lasciato incompleto e non valido e il metodo genera un'eccezione IOException .
Si applica a
.NET 9 e altre versioni
Prodotto | Versioni |
---|---|
.NET | Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9 |
.NET Framework | 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1 |
.NET Standard | 1.3, 1.4, 1.6, 2.0, 2.1 |
UWP | 10.0 |
- Origine:
- ZipFile.Create.cs
- Origine:
- ZipFile.Create.cs
Crea un archivio ZIP nel flusso specificato che contiene i file e le directory della directory specificata, usa il livello di compressione specificato e, facoltativamente, include la directory di base.
public:
static void CreateFromDirectory(System::String ^ sourceDirectoryName, System::IO::Stream ^ destination, System::IO::Compression::CompressionLevel compressionLevel, bool includeBaseDirectory);
public static void CreateFromDirectory (string sourceDirectoryName, System.IO.Stream destination, System.IO.Compression.CompressionLevel compressionLevel, bool includeBaseDirectory);
static member CreateFromDirectory : string * System.IO.Stream * System.IO.Compression.CompressionLevel * bool -> unit
Public Shared Sub CreateFromDirectory (sourceDirectoryName As String, destination As Stream, compressionLevel As CompressionLevel, includeBaseDirectory As Boolean)
Parametri
- sourceDirectoryName
- String
Percorso della directory da archiviare, specificato come percorso relativo o assoluto. Un percorso relativo è interpretato rispetto alla directory di lavoro corrente.
- destination
- Stream
Flusso in cui archiviare l'archivio ZIP.
- compressionLevel
- CompressionLevel
Uno dei valori di enumerazione che indica se evidenziare l'efficacia di velocità o compressione quando si crea la voce.
- includeBaseDirectory
- Boolean
true
per includere il nome della directory da sourceDirectoryName
nella directory radice dell'archivio; false
per includere solo il contenuto della directory.
Eccezioni
sourceDirectoryName
è Empty, contiene solo spazi vuoti oppure contiene almeno un carattere non valido.
-oppure-
Il destination
flusso non supporta la scrittura.
sourceDirectoryName
o destination
è null
.
Nel sourceDirectoryName
percorso specificato, il nome del file o entrambi superano la lunghezza massima definita dal sistema.
sourceDirectoryName
non è valido o non esiste, poiché, ad esempio, si trova su un'unità non mappata.
Impossibile aprire un file nella directory specificata.
-oppure-
Si è verificato un errore di I/O durante l'apertura di un file da archiviare.
sourceDirectoryName
o contiene un formato non valido.
compressionLevel
non è un valore valido di CompressionLevel.
Commenti
La struttura di directory del file system viene mantenuta nell'archivio. Se la directory è vuota, viene creato un archivio vuoto. Utilizzare questo overload del metodo per specificare il livello di compressione e se includere la directory di base nell'archivio. Se non è possibile aggiungere un file nella directory all'archivio, l'archivio viene lasciato incompleto e non valido e il metodo genera un'eccezione IOException .
Si applica a
.NET 9 e .NET 8
Prodotto | Versioni |
---|---|
.NET | 8, 9 |
- Origine:
- ZipFile.Create.cs
- Origine:
- ZipFile.Create.cs
- Origine:
- ZipFile.Create.cs
Crea un archivio ZIP che contiene i file e le directory della directory specificata, usa il livello di compressione specificato e facoltativamente include la directory di base.
public:
static void CreateFromDirectory(System::String ^ sourceDirectoryName, System::String ^ destinationArchiveFileName, System::IO::Compression::CompressionLevel compressionLevel, bool includeBaseDirectory);
public static void CreateFromDirectory (string sourceDirectoryName, string destinationArchiveFileName, System.IO.Compression.CompressionLevel compressionLevel, bool includeBaseDirectory);
static member CreateFromDirectory : string * string * System.IO.Compression.CompressionLevel * bool -> unit
Public Shared Sub CreateFromDirectory (sourceDirectoryName As String, destinationArchiveFileName As String, compressionLevel As CompressionLevel, includeBaseDirectory As Boolean)
Parametri
- sourceDirectoryName
- String
Percorso della directory da archiviare, specificato come percorso relativo o assoluto. Un percorso relativo è interpretato rispetto alla directory di lavoro corrente.
- destinationArchiveFileName
- String
Percorso dell'archivio da creare, specificato come percorso relativo o assoluto. Un percorso relativo è interpretato rispetto alla directory di lavoro corrente.
- compressionLevel
- CompressionLevel
Uno dei valori di enumerazione che indica se evidenziare l'efficacia di velocità o compressione quando si crea la voce.
- includeBaseDirectory
- Boolean
true
per includere il nome della directory da sourceDirectoryName
nella directory radice dell'archivio; false
per includere solo il contenuto della directory.
Eccezioni
sourceDirectoryName
o destinationArchiveFileName
è Empty, contiene solo spazi vuoti oppure almeno un carattere non valido.
sourceDirectoryName
o destinationArchiveFileName
è null
.
In sourceDirectoryName
o destinationArchiveFileName
, il percorso, il nome file o entrambi superano la lunghezza massima definita dal sistema.
sourceDirectoryName
non è valido o non esiste, poiché, ad esempio, si trova su un'unità non mappata.
destinationArchiveFileName
esiste già.
-oppure-
Impossibile aprire un file nella directory specificata.
-oppure-
Si è verificato un errore di I/O durante l'apertura di un file da archiviare.
destinationArchiveFileName
specifica una directory.
-oppure-
Il chiamante non dispone dell'autorizzazione richiesta per accedere alla directory specificata in sourceDirectoryName
o al al file specificato in destinationArchiveFileName
.
sourceDirectoryName
o destinationArchiveFileName
contiene un formato non valido.
-oppure-
L'archivio ZIP non supporta la scrittura.
Esempio
In questo esempio viene illustrato come creare ed estrarre un archivio ZIP usando la ZipFile classe . Comprime il contenuto di una cartella in un archivio ZIP e quindi estrae il contenuto in una nuova cartella. Quando si comprime l'archivio, la directory di base viene inclusa e il livello di compressione viene impostato per evidenziare la velocità dell'operazione rispetto all'efficienza. Per usare la classe ZipFile, è necessario referenziare l'assembly System.IO.Compression.FileSystem
nel progetto.
using System;
using System.IO;
using System.IO.Compression;
namespace ConsoleApplication
{
class Program
{
static void Main(string[] args)
{
string startPath = @"c:\example\start";
string zipPath = @"c:\example\result.zip";
string extractPath = @"c:\example\extract";
ZipFile.CreateFromDirectory(startPath, zipPath, CompressionLevel.Fastest, true);
ZipFile.ExtractToDirectory(zipPath, extractPath);
}
}
}
open System.IO.Compression
let startPath = @"c:\example\start"
let zipPath = @"c:\example\result.zip"
let extractPath = @"c:\example\extract"
ZipFile.CreateFromDirectory(startPath, zipPath, CompressionLevel.Fastest, true)
ZipFile.ExtractToDirectory(zipPath, extractPath)
Imports System.IO
Imports System.IO.Compression
Module Module1
Sub Main()
Dim startPath As String = "c:\example\start"
Dim zipPath As String = "c:\example\result.zip"
Dim extractPath As String = "c:\example\extract"
ZipFile.CreateFromDirectory(startPath, zipPath, CompressionLevel.Fastest, True)
ZipFile.ExtractToDirectory(zipPath, extractPath)
End Sub
End Module
Commenti
La struttura della directory dal file system viene mantenuta nell'archivio. Se la directory è vuota, viene creato un archivio vuoto. Usare questo overload del metodo per specificare il livello di compressione e se includere la directory di base nell'archivio.
Se l'archivio esiste già, viene generata un'eccezione IOException . Se esiste già una voce con il nome specificato nell'archivio, viene creata una seconda voce con un nome identico.
Se non è possibile aggiungere un file nella directory all'archivio, l'archivio viene lasciato incompleto e non valido e il metodo genera un'eccezione IOException .
Si applica a
.NET 9 e altre versioni
Prodotto | Versioni |
---|---|
.NET | Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9 |
.NET Framework | 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1 |
.NET Standard | 1.3, 1.4, 1.6, 2.0, 2.1 |
UWP | 10.0 |
- Origine:
- ZipFile.Create.cs
- Origine:
- ZipFile.Create.cs
Crea un archivio zip nel flusso specificato che contiene i file e le directory dalla directory specificata, usa il livello di compressione e la codifica dei caratteri specificati per i nomi di voce e, facoltativamente, include la directory di base.
public:
static void CreateFromDirectory(System::String ^ sourceDirectoryName, System::IO::Stream ^ destination, System::IO::Compression::CompressionLevel compressionLevel, bool includeBaseDirectory, System::Text::Encoding ^ entryNameEncoding);
public static void CreateFromDirectory (string sourceDirectoryName, System.IO.Stream destination, System.IO.Compression.CompressionLevel compressionLevel, bool includeBaseDirectory, System.Text.Encoding? entryNameEncoding);
static member CreateFromDirectory : string * System.IO.Stream * System.IO.Compression.CompressionLevel * bool * System.Text.Encoding -> unit
Public Shared Sub CreateFromDirectory (sourceDirectoryName As String, destination As Stream, compressionLevel As CompressionLevel, includeBaseDirectory As Boolean, entryNameEncoding As Encoding)
Parametri
- sourceDirectoryName
- String
Percorso della directory da archiviare, specificato come percorso relativo o assoluto. Un percorso relativo è interpretato rispetto alla directory di lavoro corrente.
- destination
- Stream
Flusso in cui archiviare l'archivio zip.
- compressionLevel
- CompressionLevel
Uno dei valori di enumerazione che indica se evidenziare l'efficacia di velocità o compressione quando si crea la voce.
- includeBaseDirectory
- Boolean
true
per includere il nome della directory da sourceDirectoryName
nella directory radice dell'archivio; false
per includere solo il contenuto della directory.
- entryNameEncoding
- Encoding
La codifica da utilizzare durante la lettura o la scrittura dei nomi delle voci in questo archivio. Specificare un valore per il parametro solo quando una codifica è obbligatoria per l'interoperabilità con gli strumenti e le librerie dell'archivio ZIP che non supportano la codifica UTF-8 per i nomi di voce.
Eccezioni
sourceDirectoryName
è Empty, contiene solo spazi vuoti oppure contiene almeno un carattere non valido.
-oppure-
Il destination
flusso non supporta la scrittura.
sourceDirectoryName
o destination
è null
.
Nel sourceDirectoryName
percorso specificato, nome file o entrambi superano la lunghezza massima definita dal sistema.
sourceDirectoryName
non è valido o non esiste, poiché, ad esempio, si trova su un'unità non mappata.
Impossibile aprire un file nella directory specificata.
-oppure-
Si è verificato un errore di I/O durante l'apertura di un file da archiviare.
sourceDirectoryName
o contiene un formato non valido.
compressionLevel
non è un valore valido di CompressionLevel.
Commenti
La struttura della directory dal file system viene mantenuta nell'archivio. Se la directory è vuota, viene creato un archivio vuoto. Usare questo overload di metodo per specificare il livello di compressione e la codifica dei caratteri e se includere la directory di base nell'archivio. Se non è possibile aggiungere un file nella directory all'archivio, l'archivio viene lasciato incompleto e non valido e il metodo genera un'eccezione IOException .
Si applica a
.NET 9 e .NET 8
Prodotto | Versioni |
---|---|
.NET | 8, 9 |
- Origine:
- ZipFile.Create.cs
- Origine:
- ZipFile.Create.cs
- Origine:
- ZipFile.Create.cs
Crea un archivio ZIP che contiene i file e le directory della directory specificata, usa il livello di compressione e la codifica caratteri specificati per i nomi di voce e facoltativamente include la directory di base.
public:
static void CreateFromDirectory(System::String ^ sourceDirectoryName, System::String ^ destinationArchiveFileName, System::IO::Compression::CompressionLevel compressionLevel, bool includeBaseDirectory, System::Text::Encoding ^ entryNameEncoding);
public static void CreateFromDirectory (string sourceDirectoryName, string destinationArchiveFileName, System.IO.Compression.CompressionLevel compressionLevel, bool includeBaseDirectory, System.Text.Encoding entryNameEncoding);
public static void CreateFromDirectory (string sourceDirectoryName, string destinationArchiveFileName, System.IO.Compression.CompressionLevel compressionLevel, bool includeBaseDirectory, System.Text.Encoding? entryNameEncoding);
static member CreateFromDirectory : string * string * System.IO.Compression.CompressionLevel * bool * System.Text.Encoding -> unit
Public Shared Sub CreateFromDirectory (sourceDirectoryName As String, destinationArchiveFileName As String, compressionLevel As CompressionLevel, includeBaseDirectory As Boolean, entryNameEncoding As Encoding)
Parametri
- sourceDirectoryName
- String
Percorso della directory da archiviare, specificato come percorso relativo o assoluto. Un percorso relativo è interpretato rispetto alla directory di lavoro corrente.
- destinationArchiveFileName
- String
Percorso dell'archivio da creare, specificato come percorso relativo o assoluto. Un percorso relativo è interpretato rispetto alla directory di lavoro corrente.
- compressionLevel
- CompressionLevel
Uno dei valori di enumerazione che indica se evidenziare l'efficacia di velocità o compressione quando si crea la voce.
- includeBaseDirectory
- Boolean
true
per includere il nome della directory da sourceDirectoryName
nella directory radice dell'archivio; false
per includere solo il contenuto della directory.
- entryNameEncoding
- Encoding
La codifica da utilizzare durante la lettura o la scrittura dei nomi delle voci in questo archivio. Specificare un valore per il parametro solo quando una codifica è obbligatoria per l'interoperabilità con gli strumenti e le librerie dell'archivio ZIP che non supportano la codifica UTF-8 per i nomi di voce.
Eccezioni
sourceDirectoryName
o destinationArchiveFileName
è Empty, contiene solo spazi vuoti oppure almeno un carattere non valido.
-oppure-
entryNameEncoding
è impostato su una codifica Unicode diversa da UTF-8.
sourceDirectoryName
o destinationArchiveFileName
è null
.
In sourceDirectoryName
o destinationArchiveFileName
, il percorso, il nome file o entrambi superano la lunghezza massima definita dal sistema.
sourceDirectoryName
non è valido o non esiste, poiché, ad esempio, si trova su un'unità non mappata.
destinationArchiveFileName
esiste già.
-oppure-
Impossibile aprire un file nella directory specificata.
-oppure-
Si è verificato un errore di I/O durante l'apertura di un file da archiviare.
destinationArchiveFileName
specifica una directory.
-oppure-
Il chiamante non dispone dell'autorizzazione richiesta per accedere alla directory specificata in sourceDirectoryName
o al al file specificato in destinationArchiveFileName
.
sourceDirectoryName
o destinationArchiveFileName
contiene un formato non valido.
-oppure-
L'archivio ZIP non supporta la scrittura.
Commenti
La struttura della directory dal file system viene mantenuta nell'archivio. Se la directory è vuota, viene creato un archivio vuoto. Usare questo overload di metodo per specificare il livello di compressione e la codifica dei caratteri e se includere la directory di base nell'archivio.
Se l'archivio esiste già, viene generata un'eccezione IOException . Se esiste già una voce con il nome specificato nell'archivio, viene creata una seconda voce con un nome identico.
Se non è possibile aggiungere un file nella directory all'archivio, l'archivio viene lasciato incompleto e non valido e il metodo genera un'eccezione IOException .
Se entryNameEncoding
è impostato su un valore diverso null
da , i nomi di voce vengono codificati usando la codifica specificata. Se la codifica specificata è una codifica UTF-8, il flag di codifica del linguaggio (nel flag a bit generico dell'intestazione del file locale) viene impostato per ogni voce,
Se entryNameEncoding
è impostato su null
, i nomi di voce vengono codificati in base alle regole seguenti:
Per i nomi di voce che contengono caratteri all'esterno dell'intervallo ASCII, il flag di codifica del linguaggio è impostato e UTF-8 viene usato per codificare il nome della voce.
Per i nomi di voce che contengono solo caratteri ASCII, il flag di codifica del linguaggio è impostato e la tabella codici predefinita del sistema corrente viene usata per codificare i nomi delle voci.
Si applica a
.NET 9 e altre versioni
Prodotto | Versioni |
---|---|
.NET | Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9 |
.NET Framework | 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1 |
.NET Standard | 1.3, 1.4, 1.6, 2.0, 2.1 |
UWP | 10.0 |
Feedback su .NET
.NET è un progetto di open source. Selezionare un collegamento per fornire feedback: