移动端六大语言速记:第7部分 - 文件与输入输出(I/O)
本文将对比Java、Kotlin、Flutter(Dart)、Python、ArkTS和Swift这六种移动端开发语言在文件与输入输出(I/O)方面的特性,帮助开发者理解和掌握各语言的I/O操作机制。
7. 文件与输入输出(I/O)
7.1 文件读写
各语言文件读写的语法对比:
语言 | 文本文件读取 | 文本文件写入 | 二进制文件读取 | 二进制文件写入 |
---|---|---|---|---|
Java | Files.readString() , BufferedReader |
Files.writeString() , BufferedWriter |
FileInputStream |
FileOutputStream |
Kotlin | File.readText() , File.readLines() |
File.writeText() , File.writeLines() |
File.inputStream() |
File.outputStream() |
Dart | File.readAsString() , File.readAsLines() |
File.writeAsString() , File.writeAsBytes() |
File.readAsBytes() |
File.writeAsBytes() |
Python | open().read() , open().readlines() |
open().write() , open().writelines() |
open(mode='rb') |
open(mode='wb') |
ArkTS | readFile() , readTextFile() |
writeFile() , writeTextFile() |
readArrayBuffer() |
writeArrayBuffer() |
Swift | String(contentsOfFile:) |
write(toFile:) |
Data(contentsOf:) |
write(to:) |
示例对比
Java:
// 文本文件读写
import java.nio.file.*;
import java.io.*;
// 读取文本文件
try {
String content = Files.readString(Path.of("example.txt"));
System.out.println(content);
// 使用BufferedReader逐行读取
try (BufferedReader reader = Files.newBufferedReader(Path.of("example.txt"))) {
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
}
} catch (IOException e) {
e.printStackTrace();
}
// 写入文本文件
try {
Files.writeString(Path.of("output.txt"), "Hello, World!");
// 使用BufferedWriter写入多行
try (BufferedWriter writer = Files.newBufferedWriter(Path.of("output.txt"))) {
writer.write("Line 1\n");
writer.write("Line 2\n");
}
} catch (IOException e) {
e.printStackTrace();
}
// 二进制文件读写
try {
// 读取二进制文件
byte[] bytes = Files.readAllBytes(Path.of("example.bin"));
// 写入二进制文件
Files.write(Path.of("output.bin"), bytes);
} catch (IOException e) {
e.printStackTrace();
}
Kotlin:
import java.io.File
// 文本文件读写
try {
// 读取整个文件
val content = File("example.txt").readText()
println(content)
// 逐行读取
File("example.txt").forEachLine {
line ->
println(line)
}
// 读取所有行
val lines = File("example.txt").readLines()
lines.forEach {
println(it) }
// 写入文本
File("output.txt").writeText("Hello, World!")
// 写入多行
File("output.txt").writeLines(listOf("Line 1", "Line 2"))
} catch (e: Exception) {
e.printStackTrace()
}
// 二进制文件读写
try {
// 读取二进制文件
val bytes = File("example.bin").readBytes()
// 写入二进制文件
File("output.bin").writeBytes(bytes)
} catch (e: Exception) {
e.printStackTrace()
}
Dart:
import 'dart:io';
// 文本文件读写
Future<void> fileOperations() async {
try {
// 读取整个文件
String content = await File('example.txt').readAsString();
print(content);
// 逐行读取
List<String> lines = await File('example.txt').readAsLines();
lines.forEach(print);
// 写入文本
await File('output.txt').writeAsString('Hello, World!');
// 写入多行
await File('output.txt').writeAsString('Line 1\nLine 2\n');
} catch (e) {
print('Error: $e');
}