2016-05-20 3 views
1

Я хочу читать только строку # 2 из текстового файла, но, к сожалению, не нашел подсказки, как это сделать. Существуют ли какие-либо решения, кроме цикла и разбиения, когда строка найдена?Coldfusion чтение определенной строки из текстового файла

+0

Что с зацикливание? Нет встроенного способа извлечения одной строки (только) из файла. Вы должны либо пропустить файл, либо прочитать содержимое всего файла в памяти, и использовать строковые функции для извлечения определенного номера строки. У обоих есть плюсы и минусы. Тем не менее, цикл с [FileReadLine] (https://helpx.adobe.com/coldfusion/cfml-reference/coldfusion-functions/functions-eg/filereadline.html) является более надежным в целом, чем [FileRead] (https: // helpx .adobe.com/coldfusion/cfml-reference/coldfusion-functions/functions-eg/fileopen.html) и строковые функции. – Leigh

ответ

2

Шаг 1 - прочитать файл в переменную:

<cffile action = "read" file = "yourFile" variable = "fileContents"> 

Шаг 2 - Treat переменную как Chr (10), ограниченного списка и получить вторую строку.

line2 = ListGetAt(fileContents, 2, chr(10)); 
+0

1. Вышеуказанные могут включать дополнительные символы в зависимости от o/s. 2. Функции списка более подходят для файлов меньшего размера, так как весь файл должен сначала считываться в память. Для больших файлов используйте вместо этого FileOpen. – Leigh

2

Вот код, который наверняка поможет найти вторую строку текстового файла в окнах.

<cfset var readTextFile = fileRead(FileName) /> 
<cfset var endOfFirstLine = find(chr(13) & chr(10),readTextFile) /> 
<cfset var FirstLine = left(readTextFile,endOfFirstLine) /> 
<cfset removeFirstLine= replace(#readTextFile#,#FirstLine#,"","all")> 
<cfset var endOfsecondLine = find(chr(13) & chr(10),removeFirstLine) /> 
<!---If endOfsecondLine less than 0 means file contains only two lines---> 
<cfif endOfsecondLine GT 0> 
    <cfset var secoundLine = left(removeFirstLine,endOfsecondLine) /> 
<cfelse> 
     <cfset var secoundLine = removeFirstLine/> 
</cfif> 

<cfoutput>#secoundLine#</cfoutput> 

Для получения более подробной информации см это FileRead, Find, Left, Replace, Chr

+0

Имейте в виду, что разделители линий имеют о/с. Кроме того, хотя это не приведет к ошибке, нет необходимости в котировках и знаках фунта. – Leigh

+0

@Ligh согласен строка Chr (13) & Chr (10) возвращает новую строку Windows, поэтому этот код будет работать для окон. –

Смежные вопросы