File input/output: Difference between revisions

m
(7 intermediate revisions by 6 users not shown)
Line 2,939:
i.close()
o.close()</syntaxhighlight>
 
=={{header|Nu}}==
<syntaxhighlight lang="nu">
let text = open "input.txt"
$text | save "output.txt"
</syntaxhighlight>
 
=={{header|Objeck}}==
Line 3,525 ⟶ 3,531:
 
=={{header|Rust}}==
<syntaxhighlight lang="rust">usefn std::fs::File;main() {
let contents = std::fs::read("input.txt").expect("error reading input.txt");
use std::io::{Read, Write};
std::fs::write("output.txt", contents).expect("error writing output.txt");
 
fn main() {
let mut file = File::open("input.txt").unwrap();
let mut data = Vec::new();
file.read_to_end(&mut data).unwrap();
let mut file = File::create("output.txt").unwrap();
file.write_all(&data).unwrap();
}
</syntaxhighlight>
Line 3,565:
process::exit(code);
}</syntaxhighlight>
 
=={{header|S-BASIC}}==
Surprisingly, S-BASIC has no EOF function, so we have to rely on error trapping to signal end of file. S-BASIC stores its error codes at 103H, and we can position a base-located variable there to retrieve it. The result is something of a kludge, but it works. Other S-BASIC preculiarities are explained by the comments.
<syntaxhighlight lang="BASIC">
comment
Preserve file channel #0 (the console) while declaring channels
#2 and #3 as sequential-access ASCII files.
end
files d, sa, sa
var s = string:255
based errcode = integer
base errcode at 103H
 
comment
CP/M expects upper case file names, but S-BASIC does not
automatically convert file name arguments to upper case, so we
have to do that ourself.
end
create "OUTPUT.TXT"
open #1,"INPUT.TXT"
open #2,"OUTPUT.TXT"
 
comment
S-BASIC allows alphanumeric line "numbers" (which are treated simply
as labels) as the target of GOTO and GOSUB statements, but the first
character must be a digit
end
on error goto 9done
 
rem - runtime error code 15 signals read past end of file
while errcode <> 15 do
begin
input3 #1; s
print #2; s
end
 
9done
close #1
close #2
 
end
</syntaxhighlight>
 
 
=={{header|Scala}}==
Line 3,732 ⟶ 3,775:
 
=={{header|Standard ML}}==
===Reading the whole file at once as a string===
{{works with|SML/NJ|110.59}}
{{works with|Poly/ML|5.9.1}}
<syntaxhighlight lang="sml">fun copyFile (from, to) =
<syntaxhighlight lang="sml">
(* string -> string -> bool *)
fun copyFile from to =
let
val instream = TextIO.openIn from
Line 3,742 ⟶ 3,789:
in
true
end handle _ => false;</syntaxhighlight>
===Binary mode using a buffer===
{{works with|Poly/ML|5.9.1}}
{{works with|SML/NJ|110.99.4}}
<syntaxhighlight lang="sml">
fun copyFile from to =
let
val instream = BinIO.openIn from
val outstream = BinIO.openOut to
fun aux () =
let
val buf = BinIO.inputN(instream, 1024)
in
if Word8Vector.length buf = 0
then ()
else (BinIO.output (outstream, buf); aux ())
end
in
(aux (); BinIO.closeIn instream; BinIO.closeOut outstream)
end
</syntaxhighlight>
 
=={{header|Stata}}==
Line 3,905 ⟶ 3,972:
 
fileio = ~command.files; &h.path.&h:= 'output.txt'!</syntaxhighlight>
 
=={{header|Uxntal}}==
<syntaxhighlight lang="Uxntal">|00 @System &vector $2 &expansion $2 &wst $1 &rst $1 &metadata $2 &r $2 &g $2 &b $2 &debug $1 &state $1
|10 @Console &vector $2 &read $1 &pad $4 &type $1 &write $1 &error $1
|a0 @File1 &vector $2 &success $2 &stat $2 &delete $1 &append $1 &name $2 &length $2 &read $2 &write $2
|b0 @File2 &vector $2 &success $2 &stat $2 &delete $1 &append $1 &name $2 &length $2 &read $2 &write $2
 
|0100
;in-file .File1/name DEO2
;out-file .File2/name DEO2
 
&loop
#0100 .File1/length DEO2k POP
;buffer .File1/read DEO2
.File1/success DEI2
 
.File2/length DEO2k POP
;buffer .File2/write DEO2
 
EQU2 ?&loop
 
#80 .System/state DEO
BRK
 
@in-file "input.txt 00
@out-file "output.txt 00
@buffer $100</syntaxhighlight>
 
=={{header|Vedit macro language}}==
Line 3,920 ⟶ 4,014:
 
=={{header|Wren}}==
<syntaxhighlight lang="ecmascriptwren">import "io" for File
 
var contents = File.read("input.txt")
Line 3,962 ⟶ 4,056:
 
=={{header|Zig}}==
'''Works with:''' 0.10.x, 0.11.x, 0.12.0-dev.1357+10d03acdb
 
<syntaxhighlight lang="zig">const std = @import("std");
 
pub fn main() (error{OutOfMemory} || std.fs.File.OpenError || std.fs.File.ReadError || std.fs.File.WriteError)!void {
pub fn main() !void {
var in = trygpa: std.fsheap.cwdGeneralPurposeAllocator(.{}).openFile("input.txt", = .{});
defer in_ = gpa.closedeinit();
const allocator = gpa.allocator();
var out = try std.fs.cwd().openFile("output.txt", .{ .mode = .write_only });
 
defer out.close();
varconst file_readercwd = instd.readerfs.cwd();
 
var file_writer = out.writer();
var input_file = try cwd.openFile("input.txt", .{ .mode = .read_only });
var buf: [100]u8 = undefined;
vardefer read: usize = 1input_file.close();
 
while (read > 0) {
var readoutput_file = try file_readercwd.readAllcreateFile(&buf"output.txt", .{});
defer output_file.close();
try file_writer.writeAll(buf[0..read]);
 
}
// Restrict input_file's size to "up to 10 MiB".
var input_file_content = try input_file.readToEndAlloc(allocator, 10 * 1024 * 1024);
defer allocator.free(input_file_content);
 
try output_file.writeAll(input_file_content);
return;
}</syntaxhighlight>
 
23

edits