Writing Files in Julia

Our first example demonstrates how to write files in Julia. Writing files in Julia follows similar patterns to the ones we saw earlier for reading.

using Printf

function check(e)
    if e !== nothing
        throw(e)
    end
end

# To start, here's how to dump a string (or just bytes) into a file.
d1 = "hello\njulia\n"
open("/tmp/dat1", "w") do file
    write(file, d1)
end

# For more granular writes, open a file for writing.
f = open("/tmp/dat2", "w")

# It's idiomatic to use a try-finally block to ensure the file is closed
try
    # You can write byte arrays as you'd expect.
    d2 = [0x73, 0x6f, 0x6d, 0x65, 0x0a]  # "some\n" in bytes
    n2 = write(f, d2)
    @printf("wrote %d bytes\n", n2)

    # A write for strings is also available.
    n3 = write(f, "writes\n")
    @printf("wrote %d bytes\n", n3)

    # Flush writes to ensure they're written to stable storage.
    flush(f)

    # Julia's IOBuffer provides buffered writing capabilities.
    buf = IOBuffer()
    n4 = write(buf, "buffered\n")
    @printf("wrote %d bytes\n", n4)

    # Use write to ensure all buffered operations have been applied to the underlying writer.
    write(f, take!(buf))
finally
    close(f)
end

Try running the file-writing code.

$ julia writing-files.jl
wrote 5 bytes
wrote 7 bytes
wrote 9 bytes

Then check the contents of the written files.

$ cat /tmp/dat1
hello
julia
$ cat /tmp/dat2
some
writes
buffered

Next, we’ll look at applying some of the file I/O ideas we’ve just seen to the stdin and stdout streams.

查看推荐产品

Comments powered by Disqus