Kotlin中的Zip字节[]。Kotlin的Java代码
我试图使用这个Java代码,但在Android Studio中将其转换为Kotlin,但我在Kotlin中找不到与Kotlin中的Kotlin中的Zip字节[]。Kotlin的Java代码,java,android,kotlin,Java,Android,Kotlin,我试图使用这个Java代码,但在Android Studio中将其转换为Kotlin,但我在Kotlin中找不到与Kotlin中的setSize(…)和.length等效的代码。有人能帮我吗 public static byte[] zipBytes(String filename, byte[] input) throws IOException { ByteArrayOutputStream baos = new ByteArrayOutputStream(); ZipOut
setSize(…)
和.length
等效的代码。有人能帮我吗
public static byte[] zipBytes(String filename, byte[] input) throws IOException {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ZipOutputStream zos = new ZipOutputStream(baos);
ZipEntry entry = new ZipEntry(filename);
entry.setSize(input.length);
zos.putNextEntry(entry);
zos.write(input);
zos.closeEntry();
zos.close();
return baos.toByteArray();
}
Kotlin中的数组有
size
字段,而不是Java数组length
,size
字段在Kotlin中是Int
,但是ZipEntry.setSize(long size)
只接受long
。所以你可以这样做:
entry.setSize(input.size.toLong())
或者用更通俗的方式:
entry.size = input.size.toLong()
请尝试使用以下代码:
进口:
import java.io.IOException
import java.text.DecimalFormat
import java.util.zip.ZipEntry
import java.util.zip.ZipOutputStream
您在kotlin中编写代码:
@Throws(IOException::class)
fun zipBytes(filename: String?, input: ByteArray): ByteArray? {
val baos = ByteArrayOutputStream()
val zos = ZipOutputStream(baos)
val entry = ZipEntry(filename)
entry.size = input.size.toLong()
zos.putNextEntry(entry)
zos.write(input)
zos.closeEntry()
zos.close()
return baos.toByteArray()
}
当您用kotlin编写byteArray时,如下所示:
val byteArray = ByteArray(1024)
var length = byteArray.size
文件说
字节数组。以JVM为目标时,此类的实例表示为byte[]
。
@构造函数创建指定[size]的新数组,所有元素初始化为零
为了证明这一点,检查创建的字节码如下:
byte[] byteArray = new byte[1024];
int test = byteArray.length;
因此,在您的情况下,可以这样编写代码
entry.size = byteArray.size
但是size
的类型是int
和entry。size
需要一个long
值,只需将.toLong()
添加到size
中,就可以解决这个问题。可能,它的答案可能会对您有所帮助。如果没有,请分享您是否在文档中搜索过。