Asked Dec 7th, 2017 6:32 AM 165 0 3
  • 165 0 3
+1

Hỏi về convert java sang kotlin

Share
  • 165 0 3

Mình có 1 đoạn code java về download file

InputStream input = new BufferedInputStream(url.openStream(), 8192);

            // Output stream to write file
            OutputStream output = new FileOutputStream(filePath);

            byte data[] = new byte[1024];

            long total = 0;

            while ((count = input.read(data)) != -1) {
                total += count;
                // publishing the progress....
                // After this onProgressUpdate will be called
                publishProgress("" + (int) ((total * 100) / lenghtOfFile));

                // writing data to file
                output.write(data, 0, count);
            }

Khi dùng Android Studio convert sang Kotlin thì được kết quả

val input = BufferedInputStream(url.openStream(), 8192)

            // Output stream to write file
            val output = FileOutputStream(filePath)

            val data = ByteArray(1024)

            var total: Long = 0

            while ((count = input.read(data)) != -1) {
                total += count.toLong()
                // publishing the progress....
                // After this onProgressUpdate will be called
                publishProgress("" + (total * 100 / lenghtOfFile).toInt())

                // writing data to file
                output.write(data, 0, count)
            }

Nhưng lại bị báo lỗi biên dịch ở đoạn code

  while ((count = input.read(data)) != -1) {

Error:(72, 21) Assignments are not expressions, and only expressions are allowed in this context

Mọi người cho mình hỏi đoạn code này thì kotlin chuyển sang thế nào ạ Em cảm ơn

3 ANSWERS


Answered Dec 7th, 2017 9:13 AM
Accepted
+1

Nên viết thế này

count = input.read(data)
 while (count  != -1) {
    count = input.read(data)
}
Share
Answered Dec 7th, 2017 9:14 AM
+2

Bạn bị sai cú pháp chút xiu. Sửa lại 1 xíu là được như này bạn nhé

 while ({ count = input.read(data); count }() != -1) {
 //TODO Some thing
}
Share
Answered Dec 7th, 2017 9:12 AM
0

thay đoạn check trên thành

val iterator = reader?.lineSequence()?.iterator()
            if (iterator != null) {
                while (iterator.hasNext()) {
                    result += iterator.next()
                }
            }
Share