Skip to content

Existing file with bad magic prevents save() #267

@dbohdan

Description

@dbohdan

This is surprising behavior. The user does not expect the format of an existing file to prevent overwriting it. Here is a transcript showing the problem.

julia> using FileIO, ImageIO

julia> A = rand(10, 10)
10×10 Array{Float64,2}:
...

julia> isfile("bad.png")
false

julia> save("bad.png", A)
0

julia> open("bad.png", "w") do io write(io, "Ceci n'est pas un PNG") end
22

julia> save("bad.png", A)
ERROR: File{DataFormat{:UNKNOWN}}("/tmp/demo/bad.png") couldn't be recognized by FileIO.

Stacktrace:
 [1] save(::Formatted, ::Any; options::Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}) at /home/dbohdan/.julia/packages/FileIO/zL0JE/src/loadsave.jl:196
 [2] save at /home/dbohdan/.julia/packages/FileIO/zL0JE/src/loadsave.jl:196 [inlined]
 [3] #save#15 at /home/dbohdan/.julia/packages/FileIO/zL0JE/src/loadsave.jl:118 [inlined]
 [4] save(::String, ::Array{Float64,2}) at /home/dbohdan/.julia/packages/FileIO/zL0JE/src/loadsave.jl:118
 [5] top-level scope at REPL[16]:1

julia> rm("bad.png")

julia> save("bad.png", A)
0

julia> save("bad.png", A)
0

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions