kotlin中使用AutoClosable特性进行复制文件

25 篇文章 0 订阅
4 篇文章 0 订阅

kotlin中使用AutoClosable特性进行复制文件

java7以后提供了try with resources与AutoClosable两个特性,使得复制文件方式简洁了些:

private void copyFile(String srcPath, String dstPath) {
    File srcFile = new File(srcPath);
    if (!srcFile.exists()) {
        return;
    }
    File dstFile = new File(dstPath);
    try (InputStream input = new FileInputStream(srcFile);
            OutputStream output = new FileOutputStream(dstFile)) {
        byte[] buf = new byte[1024];
        int bytesRead;
        while ((bytesRead = input.read(buf)) > 0) {
            output.write(buf, 0, bytesRead);
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
}

kotlin中提倡函数式编程,try with resources特性对它来说没有意义,因此kotlin提供了use内联函数,可以很方便的使用函数式风格来实现AutoClosable特性
kotlin中也没有了可检查异常(Checked Exception),我个人比较不赞同在编译阶段不检查异常这种做法,这样做不利于经验不足的开发者提前做好异常控制,好在kotlin1.3中加入了runCatching这个内联函数,这样就能使用函数式风格来处理异常控制

fun copyFile(srcPath: String, dstPath: String) {
    File(srcPath).runCatching {
        takeIf { it.exists() }?.inputStream()?.use { inputStream ->
            File(dstPath).outputStream().use { outputStream ->
                inputStream.copyTo(outputStream)
            }
        }
    }.onFailure { // print or throw }
}

注意:本文仅讨论kotlin与java使用IO复制文件,NIO不在讨论范围内

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Kotlin ,你可以使用 Android Jetpack 的 View Binding 功能来进行视图绑定。下面是使用视图绑定的步骤: 1. 确保你的项目已经启用了视图绑定。在项目的 build.gradle 文件,确保以下行被添加: ``` android { ... viewBinding { enabled = true } } ``` 2. break; } } if (win) { return true; } } } // 检查纵 在 XML 布局文件定义视图。例如,如果你有一个名为 `activity_main.xml` 的布局文件,其包含一个 `TextView`,可以这样定义: ```xml <TextView android:id="@+id/myTextView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello World!" /> ``` 3. 构建项目以生成视图绑定类。在项目构建后,系统会为每个布局文件生成一个绑定类。对于 `activity_main.xml`,会生成一个名为 `ActivityMainBinding` 的绑定类。 4. 在代码使用视图绑定。在你的活动或片段使用 `ActivityMainBinding.inflate()` 方法来获取绑定对象,并使用该对象访问布局的视图。例如: ```kotlin import com.example.myapp.databinding.ActivityMainBinding class MainActivity : AppCompatActivity() { private lateinit var binding: ActivityMainBinding override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) binding = ActivityMainBinding.inflate(layoutInflater) val view = binding.root setContentView(view) // 使用绑定对象访问视图 binding.myTextView.text = "Hello Kotlin!" } } ``` 这样,你就可以使用视图绑定来访问布局文件的视图,而无需手动使用 `findViewById` 方法进行查找和类型转换。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值