库中的File
类dart:io
还不包括copy()
和move()
方法。
为了让我在他们到达之前渡过难关,我正在尝试推出自己的复制功能。我在 Windows 上使用下面的代码,但它只是创建了一个 0kb 文件。
void copyFile(String input, String output) {
var inFile = new File(input), outFile = new File(output);
if (outFile.existsSync()) outFile.deleteSync(); // I realize this isn't required
var inStream = null, outStream = null;
try {
inStream = inFile.openInputStream();
outStream = outFile.openOutputStream(FileMode.WRITE);
inStream.pipe(outStream);
} finally {
if (outStream != null && !outStream.closed) outStream.close();
if (inStream != null && !inStream.closed) inStream.close();
}
}
我也试过pipe
用print(inStream.read(100).toString());
我得到了null
. 输入文件确实存在(否则我会得到 FileIOException)。我做错了什么,还是在 Windows 下输入流被破坏了?
我在用着:
- Dart 编辑器版本 0.3.1_r17463
- Dart SDK 版本 0.3.1.2_r17463
编辑:以下作品(虽然它不“块”)。我是否错误地使用了上面的流?
void copyFile(String input, String output) {
var inFile = new File(input), outFile = new File(output);
if (outFile.existsSync()) outFile.deleteSync(); // I realize this isn't required
outFile.writeAsBytesSync(inFile.readAsBytesSync(), FileMode.WRITE);
}