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?
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
C) C:\users\OddThinking\Documents\My Fuente \ Widget \ foo.src (sin punto)
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
I) C:\users\OddThinking\Documents\My Fuente \ Widget \ foo.src
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)
-
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:
-
Ruta relativa:
My Source\Widget\
es ruta relativa así comoWidget\foo.src
. Se explica por sí mismo. -
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.
-
Ruta relativa:
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.-
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.-
Subcarpetas: Con respecto a
users
OddThinking
yDocuments
son subcarpetas. -
Sub Directorios: Con respecto a
users
OddThinking\
,OddThinking\Documents\
yOddThinking\Documents\My Source\Widget\
son subdirectorios. Pero a menudo no tenemos que preocuparnos por ello, ¿verdad? -
Carpeta secundaria: Con respecto a
users
OddThinking
es una carpeta secundaria (así como sub folder) -
Carpeta principal : Para
OddThinking
users
es su carpeta padre (Solo mencionando diferentes terminologías, no es gran cosa).
-
Subcarpetas: Con respecto a
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.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.-
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.
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.
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 inclusoOddThinking\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 estoD:\Fruit\Apple\Pip\
? Directory. Pero si la pregunta es cuál es el directorio o mejor aún el nombre del directorio deD:\Fruit\Apple\Pip\
, la respuesta esD:\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:
-
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)
-
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:
-
Considere el camino
C:\Documents and Settings\All Users\Application Data\s.sql
.-
C:\Documents and Settings\All Users\Application Data\s.sql
es la ruta completa (que es un nombre de archivo) -
C:\Documents and Settings\All Users\Application Data\
es el nombre del directorio.
-
-
Ahora consideremos el camino
C:\Documents and Settings\All Users\Application Data
-
C:\Documents and Settings\All Users\Application Data
es el camino completo (que sucede a ser un directorio) -
C:\Documents and Settings\All Users
es el nombre del directorio.
-
Dos puntas mías:
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.
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..
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
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 :)
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