Разделитель пути для Windows и Unix

Есть ли какой-либо специальный символ, который не может быть частью пути в Windows или Unix, что я могу использовать его в качестве разделителя?

17
задан user269354 9 February 2010 в 09:21
поделиться

4 ответа

В Википедии полезно перечислить зарезервированные символы для разных файловых систем . Ни NTFS, ни POSIX не принимают символы нуля или косой черты (/) в именах файлов. Символ косой черты, очевидно, не является хорошим разделителем, поскольку он часто встречается в путях POSIX, поэтому, возможно, вы могли бы использовать null.

Конечно, null подходит не для всех ситуаций (например, он обычно не отображается при печати), и в этом случае вам, возможно, придется использовать какую-то схему экранирования .

Java, предназначенная для работы на разных платформах, даже не пытается найти общий разделитель путей. Вместо этого каждая платформа имеет свой собственный характер, доступный через API .

6
ответ дан 30 November 2019 в 10:18
поделиться

С учетом следующей таблицы

CREATE TABLE [dbo].[Orders](
    [OrderID] [int] IDENTITY(1,1) NOT NULL,
    [CustomerID] [int] NULL,
    [OrderDate] [datetime] NULL,
     CONSTRAINT [PK_Orders] PRIMARY KEY CLUSTERED 
    (
        [OrderID] ASC
    )
)

следующая инструкция показывает последний заказ, размещенный клиентом в течение периода времени, за которым следуют другие заказы.

;With OrderList As
(
Select Top 100 Percent * From dbo.Orders
Where OrderDate >= DateAdd(hh, -1, GetDate())
Order By OrderDate Desc
)
Select 'First' As DataType, 
    CustomerID, Min(OrderID) As OrderID, Min(OrderDate) As OrderDate
From OrderList
Group By CustomerID
Union All
Select 'Second' As DataType,
    CustomerID, OrderID, OrderDate
From OrderList
Where OrderID Not In
(
    Select Min(OrderID) As OrderID
    From OrderList
    Group By CustomerID
)
--Union All
--Select 'Raw' As DataType, 
--    CustomerID, OrderID, OrderDate
--From Orders

Последняя часть комментируется, поскольку я использовал ее, чтобы проверить, действительно ли я получил правильные строки.

Короче говоря, инструкция With ограничивает заказы из таблицы заказами, размещенными в течение последнего часа на основе текущей системной даты, и упорядочивает их по дате заказа. Первый оператор (Select 'First') затем извлекает только первые заказы клиента. Второй оператор (Select 'Second') затем извлекает все другие порядки, которые отсутствуют в первом операторе.

Это должно работать так, как вы ожидали, Мухаммед, однако у меня нет 1000 строк, чтобы проверить это. Производительность должна быть нормальной, так как деталь With создаст временную таблицу для работы.

-121--4501520-

Иметь много или много отношений.

Имеется таблица данных, таблица языков и таблица data_language.

В таблице data_language у вас есть

id, data_id, language_id

I думаю, что это может лучше всего сработать для вас.

-121--1020264-

как насчет разделителя для переменной среды PATH? ; для окон и : для linux.

50
ответ дан 30 November 2019 в 10:18
поделиться
  • Пройдите через вопросы по SO с C++ , ООП тэгов.
  • C++ FAQ
-121--2633492-

Учитывая следующую таблицу:

CREATE TABLE [dbo].[Orders](
    [OrderID] [int] IDENTITY(1,1) NOT NULL,
    [CustomerID] [int] NULL,
    [OrderDate] [datetime] NULL,
     CONSTRAINT [PK_Orders] PRIMARY KEY CLUSTERED 
    (
        [OrderID] ASC
    )
)

в следующей инструкции показан последний заказ, размещенный клиентом в течение периода времени, за которым следуют другие заказы.

;With OrderList As
(
Select Top 100 Percent * From dbo.Orders
Where OrderDate >= DateAdd(hh, -1, GetDate())
Order By OrderDate Desc
)
Select 'First' As DataType, 
    CustomerID, Min(OrderID) As OrderID, Min(OrderDate) As OrderDate
From OrderList
Group By CustomerID
Union All
Select 'Second' As DataType,
    CustomerID, OrderID, OrderDate
From OrderList
Where OrderID Not In
(
    Select Min(OrderID) As OrderID
    From OrderList
    Group By CustomerID
)
--Union All
--Select 'Raw' As DataType, 
--    CustomerID, OrderID, OrderDate
--From Orders

Последняя часть комментируется, поскольку я использовал ее, чтобы проверить, действительно ли я получил правильные строки.

Короче говоря, инструкция With ограничивает заказы из таблицы заказами, размещенными в течение последнего часа на основе текущей системной даты, и упорядочивает их по дате заказа. Первый оператор (Select 'First') затем извлекает только первые заказы клиента. Второй оператор (Select 'Second') затем извлекает все другие порядки, которые отсутствуют в первом операторе.

Это должно работать так, как вы ожидали, Мухаммед, однако у меня нет 1000 строк, чтобы проверить это. Производительность должна быть нормальной, так как деталь With создаст временную таблицу для работы.

-121--4501520-

Я был бы осторожен с пользовательскими разделителями, потому что они могут сломаться в будущем, например, если кто-то использует Юникод, а ваш пользовательский разделитель является частью другого символа.

-1
ответ дан 30 November 2019 в 10:18
поделиться

Технически Unix допускает использование любых символов в папке / имени файла, кроме / , конечно, которые будут интерпретироваться как часть пути. Windows поддерживает только печатные символы и некоторые специальные символы, за исключением \ /: *? "<> | .

2
ответ дан 30 November 2019 в 10:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: