Думаю, я понял это. Существует определенный формат URL, который автоматически открывает приложение «Файлы», которое является общим документом: // - Вот простая функция, которая, кажется, просто выполняет эту задачу.
func openSharedFilesApp() {
let documentsUrl = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!
let sharedurl = documentsUrl.absoluteString.replacingOccurrences(of: "file://", with: "shareddocuments://")
let furl:URL = URL(string: sharedurl)!
UIApplication.shared.open(furl, options: convertToUIApplicationOpenExternalURLOptionsKeyDictionary([:]), completionHandler: nil)
}
Вот острота Perl, взятая из http://www.technocage.com/~caskey/dos2unix/
#!/usr/bin/perl -pi
s/\r\n/\n/;
Можно выполнить его следующим образом:
perl dos2unix.pl < file.dos > file.unix
Или, можно выполнить его также таким образом (преобразование сделано оперативное):
perl -pi dos2unix.pl file.dos
И вот моя (наивная) версия C:
#include <stdio.h>
int main(void)
{
int c;
while( (c = fgetc(stdin)) != EOF )
if(c != '\r')
fputc(c, stdout);
return 0;
}
Необходимо выполнить его с входным и выходным перенаправлением:
dos2unix.exe < file.dos > file.unix
При установке основы cygwin слишком тяжел, существуют много автономные dos2unix
и unix2dos
Windows автономные основанные на консоли программы в сети, многих с доступным источником C/C++. Если бы я понимаю требование правильно, любое из этих решений соответствовало бы приятно автоматизированному сценарию сборки.
Если Вы находитесь в Windows и нуждаетесь в чем-то выполненном в сценарии пакетной обработки, можно скомпилировать простую программу C для добиваний цели.
#include <stdio.h>
int main() {
while(1) {
int c = fgetc(stdin);
if(c == EOF)
break;
if(c == '\r')
continue;
fputc(c, stdout);
}
return 0;
}
Использование:
myprogram.exe < input > output
Оперативное редактирование было бы немного более трудным. Кроме того, можно хотеть сохранить резервные копии оригиналов по некоторым причинам (в случае, если Вы случайно разделяете двоичный файл, например).
Та версия удаляет все символы CR; если Вы только хотите удалить тех, которые находятся в паре CR-LF, можно использовать (это - классический метод с одной символьной спиной :-):
/* XXX Contains a bug -- see comments XXX */
#include <stdio.h>
int main() {
int lastc = EOF;
int c;
while ((c = fgetc(stdin)) != EOF) {
if ((lastc != '\r') || (c != '\n')) {
fputc (lastc, stdout);
}
lastc = c;
}
fputc (lastc, stdout);
return 0;
}
Можно отредактировать файл оперативный режим использования "r +". Ниже общая myd2u программа, которая принимает имена файлов как аргументы.Примечание: Эта программа использует ftruncate для обрубания дополнительных символов в конце. Если существует какой-либо лучше (стандартный) способ сделать это, отредактируйте или прокомментируйте.Спасибо!
#include <stdio.h>
int main(int argc, char **argv) {
FILE *file;
if(argc < 2) {
fprintf(stderr, "Usage: myd2u <files>\n");
return 1;
}
file = fopen(argv[1], "rb+");
if(!file) {
perror("");
return 2;
}
long readPos = 0, writePos = 0;
int lastC = EOF;
while(1) {
fseek(file, readPos, SEEK_SET);
int c = fgetc(file);
readPos = ftell(file); /* For good measure. */
if(c == EOF)
break;
if(c == '\n' && lastC == '\r') {
/* Move back so we override the \r with the \n. */
--writePos;
}
fseek(file, writePos, SEEK_SET);
fputc(c, file);
writePos = ftell(file);
lastC = c;
}
ftruncate(fileno(file), writePos); /* Not in C89/C99/ANSI! */
fclose(file);
/* 'cus I'm too lazy to make a loop. */
if(argc > 2)
main(argc - 1, argv - 1);
return 0;
}
Ftp это от поля DOS, к полю Unix, как файл ASCII, вместо двоичного файла. Ftp разделит crlf и вставит lf. Возвратите его к полю DOS как двоичный файл, и lf будет сохранен.
tr -d '^M' < infile > outfile
Вы введете ^M как: ctrl+V, Войти
Править: Можно использовать '\r' вместо того, чтобы вручную ввести возврат каретки, [благодаря @strager]
tr -d '\r' < infile > outfile
Редактирование 2: 'TR' является утилитой Unix, можно загрузить собственную версию для Windows с http://unxutils.sourceforge.net [благодаря @Rob Kennedy] или использовать эмуляцию Unix cygwin.
Некоторые текстовые редакторы, такие как UltraEdit/UEStudio имеют эту встроенную функциональность.
File > Conversions > DOS to UNIX
Если это - всего один файл, я использую блокнот ++. Хороший, потому что это свободно. Я имею установленный cygwin и использую один сценарий лайнера, который я записал для нескольких файлов. Если Ваш интерес к сценарию оставляет комментарий. (Я не имею его в наличии для меня в этот момент.)