设为首页 加入收藏

TOP

Java IO流 - 字节流的使用详细介绍(三)
2023-07-23 13:28:37 】 浏览:44
Tags:Java
-io-app/src/test.txt"); oup.write('a'); // 支持写入编码 oup.write(97); // 汉字占三个字节, 所以该方法不可以写入汉字 // oup.write('我'); // 写数据必须刷新数据 oup.flush(); // 刷新流后可以继续写入数据 oup.write('b'); // 使用完后需要关闭流, 关闭后不能再写入数据 oup.close();

}

"""


写一个字节数组出去


"""

public static void main(String[] args) throws Exception {
OutputStream oup = new FileOutputStream("/Users/chenyq/Documents/learn_Java/code/file-io-app/src/test.txt");

// 定义一个字节数组
byte[] arr = {'a', 98, 'b', 'c'};
// 写入中文, 需要将中文编码成字节数组
byte[] chinese = "中国".getBytes();

// 写入英文字节数组
oup.write(arr);
// 写入中文字节数组
oup.write(chinese);

// 关闭流(关闭之前会刷新)
oup.close();

}

"""


写入一个字节数组的一部分


"""

public static void main(String[] args) throws Exception {
OutputStream oup = new FileOutputStream("/Users/chenyq/Documents/learn_Java/code/file-io-app/src/test.txt");

// 定义一个字节数组
byte[] arr = {'a', 98, 'b', 'c'};
// 写入数组的第二个和第三个元素
oup.write(arr, 1, 2);

// 关闭流(关闭之前会刷新)
oup.close();

}

"""


补充知识:

补充一: 写入内容时, 如果需要换行可将\r\n(window支持输入\n但是有些系统不支持, 为了具备通用性使用\r\n)转为字节数组写入, 实现换行效果

"""

public static void main(String[] args) throws Exception {
OutputStream oup = new FileOutputStream("/Users/chenyq/Documents/learn_Java/code/file-io-app/src/test.txt");

// 定义一个字节数组
byte[] arr = {'a', 98, 'b', 'c'};
oup.write(arr);
// 写入换行
oup.write("\r\n".getBytes());
// 写入数组的第二个和第三个元素
oup.write(arr, 1, 2);

// 关闭流(关闭之前会刷新)
oup.close();

}

"""


补充二: 当写入文件时, 会先将原来文件清空, 再写入新的数据, 如果我们想在原来文件数据的基础上追加新的数据, 这时候就需要将构造器的第二个参数设置为true


构造器 说明
FileOutputStream(File file,boolean append) 创建字节输出流管道与源文件对象接通,可追加数据
FileOutputStream(String filepath,boolean append) 创建字节输出流管道与源文件路径接通,可追加数据

"""

public static void main(String[] args) throws Exception {
  // 设置为true即可
OutputStream oup = new FileOutputStream("/Users/chenyq/Documents/learn_Java/code/file-io-app/src/test.txt", true);

}

"""


文件拷贝练习文件拷贝练习

需求:

把test.pdf文件复制到其他目录下的newtest.pdf文件中

思路分析:

根据数据源创建字节输入流对象

根据目的地创建字节输出流对象

读写数据,复制视频

释放资源



示例代码:

"""

public static void main(String[] args) {
try {
    // 创建要复制文件的字节输入流
    InputStream inp = new FileInputStream("/Users/chenyq/Documents/learn_Java/code/file-io-app/src/test.pdf");
    // 创建目标路径的字节输出流
    OutputStream oup = new FileOutputStream("/Users/chenyq/Documents/newtest.pdf");

    // 使用文件输入流获取要复制文件的全部数据的字节数组
    byte[] arr = inp.readAllBytes();
    // 使用文件输出流将字节数组写入目标文件
    oup.write(arr);
    System.out.println("复制成功!");

    // 释放资源
    inp.close();
    oup.close();
} catch (IOException e) {
    e.printStackTrace();
}

}

"""


疑问: 字节流可以拷贝什么类型的文件?

任何文件的底层都是字节,拷贝是一字不漏的转移字节,只要前后文件格式、编码一致没有任何问题。
总结: 字节流适合拷贝文件, 但是不适合进行中文的输出输出


首页 上一页 1 2 3 下一页 尾页 3/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Java扩展Nginx之四:远程调试 下一篇Java入门13(socket)

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目