我对 Kotlin 非常陌生,并且在 Windows 上使用 Kotlin/Native 制作了一个命令行 .exe。应用程序应从文本文件中读取并逐行打印在屏幕上。当它到达文件的最后一行时,它应该把它放在剪贴板中。
aFile.txt
看起来像这样:
one
two
three
...
...
the last line
read.kt
我到目前为止的代码(Kotlin/Native)是这样的:
import kotlinx.cinterop.*
import platform.posix.*
fun main(args: Array<String>) {
if (args.size != 1) {
println("Usage: read.exe <file.txt>")
return
}
val fileName = args[0]
val file = fopen(fileName, "r")
if (file == null) {
perror("cannot open input file $fileName")
return
}
try {
memScoped {
val bufferLength = 64 * 1024
val buffer = allocArray<ByteVar>(bufferLength)
do {
val nextLine = fgets(buffer, bufferLength, file)?.toKString()
if (nextLine == null || nextLine.isEmpty()) break
print("${nextLine}")
} while (true)
}
} finally {
fclose(file)
}
}
上面的代码在屏幕上打印了每一行,但是如何
"the last line"
在计算机的剪贴板中写入字符串呢?如果可能的话,我正在寻找本机(不是 Java)解决方案。
非常感谢。
更新:
显然,这不是我正在寻找的解决方案,但我还不明白他们在这里谈论什么(https://docs.microsoft.com/en-us/windows/desktop/api/winuser/nf- winuser-setclipboarddata)。
作为临时修复,我能够使用 得到我需要的东西system()
,echo
并clip
使用如下代码:
system("echo ${nextLine} | clip")
print("${nextLine}")