Nombre de archivo? ¿Nombre del camino? ¿Nombre base? Nomenclatura estándar para piezas de un trazado


Sigo metiéndome en nudos cuando estoy manipulando rutas y nombres de archivos, porque no tengo un sistema de nombres común que use.

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

Considere este problema de juguete: (ejemplo de Windows, pero esperamos que la respuesta sea independiente de la plataforma)

Se le ha dado el nombre completo de una carpeta: C:\users\OddThinking\Documents\My Fuente. Usted quiere caminar las carpetas por debajo, y compilar todos los.src to .obj.

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

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

Entonces, ¿qué nombres 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 empieces.

A) nombre base?

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

C) Extensión

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

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

I) nombre de archivo. Espera, eso es lo que llamé C. Path. Espera, eso es lo que llamé H. Tal vez H debería ser el nombre de la carpeta. ¿No es "carpeta" un término específico de Windows, sin embargo?

Author: Josh Lee, 2010-02-10

4 answers

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 file root (: help filename-modifiers)

B) C:\users\OddThinking\Documents\My Fuente \ Widget \ foo.src

Nombre del archivo o nombre base

C) C:\users\OddThinking\Documents\My Fuente \ Widget \ foo.src (sin punto)

Extensión de archivo / nombre

D) C:\users\OddThinking\Documents\My Fuente\Widget \ foo .src (con punto)

También 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 Fuente\Widget \ foo.src

Parte Superior del árbol
Sin convención, git lo llama directorio base

F) C:\users\OddThinking\Documents\My Fuente\Widget \ foo.src

Camino de la cima del árbol a la hoja
ruta relativa

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

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

H) C:\users\OddThinking\Documents\My Fuente \ Widget \ foo.src

Dir name

I) C:\users\OddThinking\Documents\My Fuente \ Widget \ foo.src

Ruta completa/absoluta

 107
Author: blinry,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-03-17 20:43:40

Buena pregunta en primer lugar, mi +1. Esta cosa me molestó cuando tuve que crear un montón de funciones en la clase de utilidad una vez. GetFileName? o GetFullName? GetApplicationPath significa ruta completa o el nombre del directorio? y así sucesivamente. Vengo de fondo. NET, así que creo que puedo añadir poco más a lo contrario excelente respuesta por @ cegy.

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

  1. Path : Path especifica un único ubicación 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 - explica más o menos lo que es. Path puede apuntar a un archivo o una carpeta o incluso a nada (C:\). La ruta puede ser:

    1. Ruta relativa: My Source\Widget\ es ruta relativa así como Widget\foo.src. Se explica por sí mismo.
    2. Ruta absolutao Ruta Completa: Es la ruta completamente calificada que apunta al objetivo. Tiendo a usar este último más a menudo. C:\users\OddThinking\Documents\My Source\Widget\foo.src es de ahí el camino completo. Vea al final lo que llamo ruta completa que apunta a un archivo y que termina como un directorio.

    La página wiki y los nombres de.NET para path son consistentes.

  2. Ruta raíz o Directorio Raíz: La primera es la convención. NET, mientras que la segunda es más escuchada en los círculos UNIX. Aunque me gustan ambos tiendo a usar el primero más. En Windows, a diferencia de UNIX, tiene muchas rutas de raíz diferentes, una para cada partición. Unix los sistemas tienen un directorio raíz que contiene información sobre otros directorios y archivos. Eg. C:\ es la ruta raíz.

  3. Carpeta o Nombre de la Carpeta: Widget, OddThinking etc en su caso. Esto 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 objetivo y no el objetivo en sí. Más abajo.

    1. Subcarpetas: Con respecto a users OddThinking y Documents son subcarpetas.
    2. Sub Directorios: Con respecto a users OddThinking\, OddThinking\Documents\ y OddThinking\Documents\My Source\Widget\ son subdirectorios. Pero a menudo no tenemos que preocuparnos por ello, ¿verdad?
    3. Carpeta secundaria: Con respecto a users OddThinking es una carpeta secundaria (así como sub folder)
    4. Carpeta principal : Para OddThinking users es su carpeta padre (Solo mencionando diferentes terminologías, no es gran cosa).
  4. Directory or Directory Name: El primero se usa generalmente en la vida real, el segundo se usa en código. Esto se refiere a la ruta completa (o simplemente ruta completa) hasta la carpeta padre del destino. En su caso, C:\users\OddThinking\Documents\My Source\Widget (Sí, un directorio nunca está destinado a apuntar a un archivo). Yo uso nombre del directorio en mi código ya que directory es una clase en. NET y el Nombre del directorio es como la propia biblioteca lo llama. Es bastante consistente con dirname usado en sistemas UNIX.

  5. Nombre de Archivo o Basename: Nombre del archivo junto con la extensión. En su caso: foo.src. Yo diría que para un uso no técnico prefiero nombre de archivo (es lo que significa para un usuario final), pero para fines técnicos me quedaría estrictamente con nombre base. Nombre de archivo es utilizado a menudo por MS, pero me sorprende cómo no son consistentes no solo en la documentación, sino incluso en la biblioteca. Allí nombre de archivo podría significar nombre de base o ruta completa del archivo. Así que estoy a favor de basename, así es como los llamo en código. Esta página en wiki también dice nombre de archivo podría significar ruta completa o el nombre base. Sorprendentemente, incluso en. NET puedo encontrar el nombre de base de uso que significa el nombre raíz de la file.

  6. Extension or Filename Extension or File Extension: Me gusta el último. Todo se refiere a la misma cosa, pero lo que es de nuevo un tema de debate! Wiki dice que es src mientras que en ese entonces recuerdo haber leído que muchos de los idiomas lo interpretan como .src. Nota el punto. Así que una vez más mi toma es, para usos casuales no importa lo que es, pero como programador siempre veo la extensión como .src.

    Ok podría he tratado de obtener algunos usos estándar, pero aquí hay dos de mis convenciones que sigo. Y se trata de caminos completos.

    1. Generalmente llamo a una ruta completa que apunta a un archivo como ruta de archivo. Para mí la ruta del archivo es clara, me dice lo que es. Aunque con file name lo encuentro como el nombre del archivo, en mi código lo llamo file name. También es consistente con " nombre del directorio". Desde el punto de vista técnico, el nombre se refiere al nombre completo. Frustrantemente. 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 un directorio. De hecho, se puede llamar directorio a cualquier parte de la dirección que no apunte a un archivo. 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 se está tratando). Bien arriba mencioné algo diferente acerca del directorio que es el nombre del directorio. Aquí está mi opinión: obtendré un nuevo camino para evitar la confusión. ¿Qué es esto D:\Fruit\Apple\Pip\? Directory. Pero si la pregunta es cuál es el directorio o mejor aún el nombre del directorio de D:\Fruit\Apple\Pip\, la respuesta es D:\Fruit\Apple\. Espero que esté despejado.

    Yo diría que es mejor no preocuparse por los dos términos finales, ya que es lo que crea la mayor confusión (para mí personalmente). Simplemente use el término camino completo !

To contéstate:

  1. con respecto al camino que has dado

    A) Ni idea. De todos modos, nunca necesité conseguir esa sola.

    B) nombre base

    C) Simplemente lo llamaría extensión de archivo por el momento, estoy menos preocupado ya que nunca necesité que solo para ser nombrado en mi código.

    D) extensión de archivo seguramente.

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

    F) trayectoria relativa

    G) folder (carpeta principal a nombre base foo.src)

    H) nombre del directorio

    I) ruta completa (o incluso nombre de archivo)

  2. en general (lo siento por ser un poco prolijo, solo para llevar el punto a casa), pero suponiendo {[18] } es de hecho un archivo

    A) NA

    B) nombre base

    C) NA

    D) extensión

    E) directorio o simplemente ruta

    F) relativo path

    G) NA

    H) directorio o simplemente ruta

    I) ruta completa (o incluso nombre de archivo)

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

  1. Considere el camino 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 consideremos el camino C:\Documents and Settings\All Users\Application Data

    1. C:\Documents and Settings\All Users\Application Data es el camino completo (que sucede a ser un directorio)
    2. C:\Documents and Settings\All Users es el nombre del directorio.

Dos puntas mías:

  1. Sigo esta regla general que cuando se trata de abordar una dirección completa independientemente de su tipo, casi siempre lo llamo "camino completo". 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 confusión potencial si va a nombrar el archivo como nombre de archivo (que para la mayoría de los usuarios de inmediato se traduce como basename). Pero sí, si tienes que ser específico sobre el tipo de ruta, es mejor nombrar entonces nombre de archivo o directorio en lugar de "ruta"más genérica.

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

Ahora que solo desde el círculo tengo algo de práctica. Una nueva marca de términos sería lo que se utiliza en OS X y Android máquinas. Y todas estas son solo rutas físicas en el sistema de archivos. Todo 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 gustaría escuchar la convención con la que ha seguido adelante..

 29
Author: nawfal,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-03-08 21:35:36

En C++, Boost.El sistema de archivos ha ideado una nomenclatura para las diversas partes de una ruta. Consulte la documentación de referencia path decomposition para obtener más detalles, así como este tutorial .

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

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

Obtienes:

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

Norma C++ ISO/IEC 14882:2017

Por otra parte Impulsar.La terminología del sistema de archivos ha sido adoptada por C++17 = > Véase 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
 19
Author: Emile Cormier,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-10 17:23:45

En sistemas Windows, a veces el directorio que contiene el archivo se llama path, 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 Unix/Linux es mucho más lógico, y eso es lo que todos mencionaron anteriormente: ruta completa incluyendo el nombre del archivo en sí. Sin embargo, si escribe "call /?"en la línea de comandos de Windows, se obtiene 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

Así que ahí está, "solo ruta" y "solo nombre de archivo". En el al mismo tiempo, se refieren a toda la cadena como "nombre de ruta completamente 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 lío en su cabeza alrededor de este tema. Está bien. no estás loco. Los nombres de ruta son :)

 3
Author: dkellner,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-06-08 23:16:16