←  Ask a Pro

ComputerCraft | Programmable Computers for Minecraft

»

Read Certain File Areas?

SNWLeader's Photo SNWLeader 26 Jan 2013

I know that they have the fs.open("string", "read or write")

but is there a way to make it read only a certain part of the file?
Quote

grand_mind1's Photo grand_mind1 26 Jan 2013

Why would you need this? Reading the entire file seems pretty good to me.
Quote

theoriginalbit's Photo theoriginalbit 26 Jan 2013

If you mean say extracting a particular line then you could do something like this
local function readLine( path, lineNum )
  local handle = fs.open( path, "r" )
  local line
  for i = 1, lineNum do
	line = handle.readLine()
  end
  handle.close()
  return line
end
obviously this could be modified to ignore particular lines too. or you could modify it to read a subset of lines, but they would need to go into a table.
Edited by TheOriginalBIT, 26 January 2013 - 04:08 PM.
Quote

crazyguymgd's Photo crazyguymgd 26 Jan 2013

 TheOriginalBIT, on 26 January 2013 - 03:12 PM, said:

If you mean say extracting a particular line then you could do something like this
local function readLine( path, line )
  local handle = fs.open( path, "r" )
  local line
  for i = 1, line do
	line = handle.readLine()
  end
  handle.close()
  return line
end
obviously this could be modified to ignore particular lines too. or you could modify it to read a subset of lines, but they would need to go into a table.

Although I would probably use two unique variable names instead of line twice :P
Quote

theoriginalbit's Photo theoriginalbit 26 Jan 2013

 crazyguymgd, on 26 January 2013 - 04:05 PM, said:

Although I would probably use two unique variable names instead of line twice :P
Yeh probs, wrote this when I just woke up and forgot that I did that :P

Scope means it should work, but for readability its better to name them differently.
Quote

crazyguymgd's Photo crazyguymgd 26 Jan 2013

 TheOriginalBIT, on 26 January 2013 - 04:07 PM, said:

 crazyguymgd, on 26 January 2013 - 04:05 PM, said:

Although I would probably use two unique variable names instead of line twice :P
Yeh probs, wrote this when I just woke up and forgot that I did that :P

Scope means it should work, but for readability its better to name them differently.

Haha yeah I just wanted to say something since you pointed out my error in another topic :)
Quote

Lyqyd's Photo Lyqyd 26 Jan 2013

 TheOriginalBIT, on 26 January 2013 - 04:07 PM, said:

 crazyguymgd, on 26 January 2013 - 04:05 PM, said:

Although I would probably use two unique variable names instead of line twice :P/>
Yeh probs, wrote this when I just woke up and forgot that I did that :P/>

Scope means it should work, but for readability its better to name them differently.

Uh, no, the loop would throw an error. Amounts to for i = 1, nil do.
Quote