unidad una special ser segundo rutas ruta que obtener not nombre fragmento forbidden filename escribir debe copiar como characters carpetas buscar archivo allowed acceso language-agnostic cross-platform terminology filenames

language agnostic - special - ¿Nombre del archivo? Nombre de la ruta? ¿Nombre base? Naming estándar para piezas de una ruta



que es una ruta de red (4)

Buena pregunta antes que nada, mi +1. Esto me molestó cuando tuve que crear una serie de funciones en la clase de Utilidad una vez. GetFileName? o GetFullName? GetApplicationPath significa la ruta completa o el nombre del directorio? y así. Vengo de .NET background, así que creo que puedo agregar un poco más a la excelente respuesta de @blinry.

Resumen: (En cursiva es lo que no usaría como programador)

  1. Path : Path especifica una ubicación única en el sistema de archivos (a menos que su ruta relativa). El nombre de la ruta se usa con menos frecuencia, pero me quedaría con la ruta, básicamente explica qué es. La ruta puede señalar un archivo o una carpeta o incluso nada (C: /). La ruta puede ser:

    1. Ruta relativa : My Source/Widget/ es ruta relativa, así como Widget/foo.src . Autoexplicativo.
    2. Ruta absoluta o ruta completa : es la ruta totalmente calificada que apunta al objetivo. Tiendo a usar este último más a menudo. C:/users/OddThinking/Documents/My Source/Widget/foo.src es una ruta completa. Ver al final lo que llamo ruta completa que apunta a un archivo y que termina como un directorio.

    La página wiki y el nombre de .NET para la ruta son consistentes.

  2. Root Path o Root Directory : Former es la convención .NET, mientras que la última es más escuchada en los círculos de UNIX. Aunque me gustan ambos, tiendo a usar el anterior más. En Windows, a diferencia de UNIX, tiene muchas rutas de acceso de raíz diferentes, una para cada partición. Los sistemas Unix tienen un directorio raíz que contiene información sobre otros directorios y archivos. P.ej. C:/ es la ruta raíz.

  3. Nombre de carpeta o carpeta : Widget , OddThinking , etc. en su caso. Esta podría ser una convención de Windows solamente (de hecho es mi propio pensamiento extraño :)), sin embargo, me opongo fuertemente a la respuesta de blinry "Directorio". Aunque para un directorio de usuario normal significa lo mismo que una carpeta (como subcarpetas, subdirectorios), creo que desde un ángulo técnico "directorio" debe sonar como una dirección calificada para el destino y no el objetivo en sí. Más abajo.

    1. Sub Carpetas : con respecto a los users OddThinking y Documents son subcarpetas.
    2. Directorios secundarios : con respecto a los users OddThinking/ , OddThinking/Documents/ y OddThinking/Documents/My Source/Widget/ son subdirectorios. Pero a menudo no necesitamos preocuparnos por eso, ¿verdad?
    3. Carpeta OddThinking : con respecto a los users OddThinking es una carpeta secundaria (y también una subcarpeta)
    4. Carpeta principal : para los users OddThinking es su carpeta principal (solo menciona diferentes terminologías, no es gran cosa).
  4. Directorio o nombre de directorio : el primero para usar generalmente en la vida real, el último para estar en el código. Esto se refiere a la ruta totalmente calificada (o simplemente a la ruta completa ) hasta la carpeta principal del objetivo. En su caso, C:/users/OddThinking/Documents/My Source/Widget (Sí, un directorio nunca debe apuntar a un archivo). Utilizo el nombre del directorio en mi código ya que el directorio es una clase en .NET y el nombre del directorio es lo que la biblioteca misma llama. Es bastante consistente con dirname usado en sistemas UNIX.

  5. Nombre de archivo o nombre base : nombre del archivo junto con la extensión. En tu caso: foo.src . Diría que para un uso no técnico prefiero el nombre del archivo (es lo que significa para un usuario final), pero para fines técnicos me apegaría estrictamente al nombre básico . File Name a menudo es utilizado por MS, pero me sorprende que no sean consistentes, no solo en la documentación, sino incluso en la biblioteca . El nombre del archivo puede significar el nombre base o la ruta completa del archivo. Así que prefiero basename, así es como los llamo en código. Esta página en wiki también dice que el nombre del archivo podría significar la ruta completa o el nombre base. Sorprendentemente, incluso en .NET, puedo encontrar el nombre base de uso como el nombre raíz del archivo.

  6. Extensión o extensión de nombre de archivo o extensión de archivo : me gusta la última. ¡Todo se refiere a lo mismo, pero lo que es nuevamente es una cuestión de debate! Wiki dice que es algo .src pero recuerdo haber leído que muchos idiomas lo interpretan como .src . Tenga en cuenta el punto. Así que, una vez más, mi opinión es que, para usos casuales, no importa de qué se .src , pero como programador siempre veo la extensión como .src .

    Ok, podría haber intentado buscar algunos usos estándar, pero aquí están dos de mis convenciones que sigo. Y se trata de caminos completos.

    1. Generalmente llamo una ruta completa que apunta a un archivo como ruta de archivo . Para mí, la ruta del archivo es clara, me dice de qué se trata. Aunque con el nombre del archivo lo encuentro como el nombre del archivo, en mi código lo llamo nombre de archivo . También es coherente con el " nombre del directorio ". Desde el punto de vista técnico, ¡el nombre se refiere al nombre completo! Frustrante, .NET usa el término nombre de archivo (así que tengo mi caso aquí) y, a veces, la ruta del archivo para esto.

    2. Llamo a una ruta completa que termina como un directorio en un directorio. De hecho, uno puede llamar a cualquier parte de la dirección que no apunte a un archivo un directorio. Así que C:/users/OddThinking/Documents/My Source/ es un directorio, C:/users/OddThinking/ es un directorio, o incluso OddThinking/Documents/My Source/ (mejor llamarlo subdirectorio o incluso mejor ruta relativa - todo eso depende del contexto con el que lo tratas). Bien arriba mencioné algo diferente sobre el directorio que es el nombre del directorio. Aquí está mi opinión: voy a obtener un nuevo camino para evitar confusiones. ¿Qué es esto D:/Fruit/Apple/Pip/ ? Un directorio Pero si la pregunta es ¿cuál es el directorio o incluso mejor nombre de directorio de D:/Fruit/Apple/Pip/ , la respuesta es D:/Fruit/Apple/ . Espero que esté claro.

    Yo diría que es mejor no preocuparse por los dos últimos términos, ya que eso es lo que crea la mayor confusión (para mí personalmente). ¡Solo usa el término ruta completa !

Para responderte:

  1. con respecto al camino que has dado

    A) No tengo idea. De todos modos, nunca tuve que hacerlo solo.

    B) basename

    C) Lo llamaría extensión de archivo por el momento, estoy lo más preocupado ya que nunca necesité que solo se mencionara en mi código.

    D) extensión de archivo seguramente.

    E) No creo que este sea un requisito de propósito general. Ni idea. En el directorio base .NET es el mismo que el nombre del directorio.

    F) camino relativo

    G) carpeta (carpeta principal al nombre base foo.src )

    H) nombre del directorio

    I) ruta completa (o incluso nombre de archivo)

  2. en general (disculpe por ser un poco prolijo, solo para foo.src el punto) pero suponiendo que foo.src es de hecho un archivo

    A) NA

    B) basename

    C) NA

    D) extensión

    E) directorio o simplemente camino

    F) camino relativo

    G) NA

    H) directorio o simplemente camino

    I) ruta completa (o incluso nombre de archivo)

Más conducción con un ejemplo de mi parte:

  1. Considere la ruta C:/Documents and Settings/All Users/Application Data/s.sql .

    1. C:/Documents and Settings/All Users/Application Data/s.sql es la ruta completa (que es un nombre de archivo)
    2. C:/Documents and Settings/All Users/Application Data/ es el nombre del directorio.
  2. Ahora considere la ruta C:/Documents and Settings/All Users/Application Data

    1. C:/Documents and Settings/All Users/Application Data es la ruta completa (que pasa a ser un directorio)
    2. C:/Documents and Settings/All Users es el nombre del directorio.

Dos consejos míos:

  1. Sigo esta regla de oro que cuando se trata de abordar una dirección completa independientemente de su tipo, casi siempre lo llamo "ruta completa". Esto no solo elimina el uso de dos terminologías para la ruta del archivo y la ruta de la carpeta, sino que también evita la posible confusión si va a nombrar el archivo como nombre de archivo (que para la mayoría de los usuarios se traduce directamente a nombre base). Pero sí, si tiene que ser específico sobre el tipo de ruta, es mejor nombrar el nombre del archivo o el directorio en lugar de una "ruta" más genérica.

  2. Sea lo que sea, tendrías tu propia idea en mente, sé consecuente con ella en todo momento. Tener un consenso entre los miembros del equipo de que esto significa esto y no eso.

Ahora que solo desde el círculo tengo algo de práctica. Una nueva marca de términos sería lo que se usa en las máquinas OS X y Android. Y todos estos son solo acerca de las rutas físicas en el sistema de archivos. Un nuevo conjunto de terminologías surgiría en el caso de las direcciones web. Espero que alguien llene el vacío en este mismo hilo :) Me encantaría escuchar la convención con la que ustedes han continuado.

Me sigo haciendo un nudo cuando estoy en rutas de manipulación y nombres de archivos, porque no tengo un sistema de nombres común que uso.

Necesito llegar a un estándar de nomenclatura y atenerme a él, y me gustaría ser claro y coherente con los demás, por lo que me abro para aprender las respuestas canónicas.

Considere este problema de juguete: (ejemplo de Windows, pero con suerte la respuesta debe ser independiente de la plataforma)

Se le ha dado el nombre completo de una carpeta: C: / users / OddThinking / Documents / My Source. Desea recorrer las carpetas que se encuentran debajo y compilar todos los .src en .obj.

En algún punto, estás viendo la siguiente cadena.

C:/users/OddThinking/Documents/My Source/Widget/foo.src

Entonces, ¿qué nombre de identificador usarías para las partes?

A) foo B) foo.src C) src D) .src E) C:/users/OddThinking/Documents/My Source/ - i.e. the top of the tree. F) Widget/foo.src - i.e. the path from the top of the tree to the leaf. G) Widget - i.e. one node of the tree. H) C:/users/OddThinking/Documents/My Source/Widget/ - i.e. the name of the folder I) C:/users/OddThinking/Documents/My Source/Widget/foo.src

Déjame darte algunas respuestas para que comiences.

A) nombre base?

B) nombre del archivo? ¿O es un nombre de archivo? La diferencia es importante al elegir los nombres de los identificadores, y nunca soy consistente aquí.

C) Extensión

D) Extensión. Espera, eso es lo que llamé C. ¿Debo evitar guardar el punto y ponerlo cuando sea necesario? ¿Qué pasa si no hay un punto en un archivo en particular?

H) nombre de ruta? O espera, ¿es solo el camino?

I) nombre del archivo. Espera, eso es lo que llamé C. Path. Espera, eso es lo que llamé H. Quizás H debería ser el nombre de la carpeta. Sin embargo, ¿no es "carpeta" un término específico de Windows?


Creo que su búsqueda de una convención de nomenclatura "estándar" será en vano. Aquí están mis propuestas, basadas en programas existentes y conocidos:

A) C: / users / OddThinking / Documents / My Source / Widget / foo .src

Vim lo llama archivo raíz (: ayuda a los modificadores de nombre de archivo)

B) C: / users / OddThinking / Documents / My Source / Widget / foo.src

nombre de archivo o nombre base

C) C: / users / OddThinking / Documents / My Source / Widget / foo. src (sin punto)

extensión de archivo / nombre

D) C: / users / OddThinking / Documents / My Source / Widget / foo .src (con punto)

también la extensión de archivo . Simplemente almacene sin el punto, si no hay punto en un archivo, no tiene extensión

E) C: / users / OddThinking / Documents / My Source / Widget / foo.src

parte superior del árbol
Sin convenciones, git lo llama directorio base

F) C: / users / OddThinking / Documents / My Source / Widget / foo.src

camino desde la parte superior del árbol hasta la hoja
camino relativo

G) C: / users / OddThinking / Documents / My Source / Widget / foo.src

un nodo del árbol
ninguna convención, tal vez un directorio simple

H) C: / users / OddThinking / Documents / My Source / Widget / foo.src

nombre dir

I) C: / users / OddThinking / Documents / My Source / Widget / foo.src

ruta completa / absoluta


En C ++, Boost.Filesystem ha ideado una nomenclatura para las diversas partes de un camino. Consulte la documentación de referencia de descomposición de la ruta para obtener detalles, así como este tutorial .

Aquí hay un resumen basado en el tutorial. Por:

  • c:/foo/bar/baa.txt Windows: c:/foo/bar/baa.txt
  • /foo/bar/baa.txt acceso de Unix: /foo/bar/baa.txt

usted obtiene:

Part Windows Posix -------------- --------------- --------------- Root name c: <empty> Root directory / / Root path c:/ / Relative path foo/bar/baa.txt foo/bar/baa.txt Parent path c:/foo/bar /foo/bar Filename baa.txt baa.txt Stem baa baa Extension .txt .txt

Estándar C ++ ISO / IEC 14882: 2017

Además, la terminología de Boost.Filesystem ha sido adoptada por C++17 => See std::filesystem

Function name Meaning ---------------- ------------------------------- root_name() Root-name of the path root_directory() Root directory of the path root_path() Root path of the path relative_path() Path relative to the root path parent_path() Path of the parent path filename() Path without base directory (basename) stem() Filename without extension extension() Component after last dot


En los sistemas Windows, a veces el directorio que contiene el archivo se llama ruta , que es como era desde el principio. Así por ejemplo,

d:/dir1/dir2/myfile.txt

se entiende como:

PATH = "d:/dir1/dir2" FILE = "myfile.txt"

El enfoque de Unix / Linux es mucho más lógico, y eso es lo que todos mencionaron anteriormente: ruta completa que incluye el nombre del archivo en sí. Sin embargo, si escribe "call /?" en la línea de comandos de Windows, obtienes esto:

%~1 - expands %1 removing any surrounding quotes (") %~f1 - expands %1 to a fully qualified path name %~d1 - expands %1 to a drive letter only %~p1 - expands %1 to a path only %~n1 - expands %1 to a file name only %~x1 - expands %1 to a file extension only

Entonces ahí está, "solo ruta" y "solo nombre de archivo". Al mismo tiempo, se refieren a la cadena completa como "nombre de ruta totalmente calificado", que se entiende como letra de unidad más ruta más nombre de archivo.

Solo estoy diciendo esto para evitar que todos se culpen a sí mismos por el desorden en su cabeza en torno a este tema. Todo está bien. No estás loco. Los nombres de ruta son :)