首页 > 编程语言 >java中IO流字节的读入与复制操作

java中IO流字节的读入与复制操作

时间:2022-09-21 09:13:03浏览次数:57  
标签:fis java IO buffer len printStackTrace 读入 catch new

import java.io.*;import org.junit.Test;

/*
 * FileInputStream和FileOutputStream的使用
 */
public class FileInputOutputStreamTest {
    
    // 使用字节流FileInputStream处理文本文件,可能出现乱码
    @Test
    public void testFileInputStream() {
        FileInputStream fis = null;
        try {
            // 1.实例化File类的对象,指明要操作的文件
            File file = new File("hello.txt");
            
            // 2.造流
            fis = new FileInputStream(file);
            
            // 3.1读数据
            // read():返回读入的一个字符。如果文件末尾,返回-1
//            int data;
//            while ((data = fis.read()) != -1) {
//                // 转换为char类型的才能正常显示
//                System.out.print((char)data);
//            }
            
            // 3.2读数据(因为是字节流这边造一个字节数组)
            byte[] buffer = new byte[5];
            int len; // 记录每次读取的字节的个数
            while ((len = fis.read(buffer)) != -1) {
                // 遍历数组一:用String构造器
                String str = new String(buffer,0,len);
                System.out.print(str);
                // 遍历数组二:
//                for (int i = 0; i < len; i++) {
//                    System.out.print((char)buffer[i]);
//                }
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            if (fis != null) {
                // 4.关闭资源
                try {
                    fis.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
    // 复制非文本文件
    @Test
    public void testOutputStream() {
        FileInputStream fis = null;
        FileOutputStream fos = null;
        try {
            fis = new FileInputStream("飘窗.jpg");
            fos = new FileOutputStream("飘窗1.jpg");
            
            byte[] buffer = new byte[1024];
            int len;
            while ((len = fis.read(buffer)) != -1) {
                fos.write(buffer, 0, len);
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }finally {// 4.关闭资源
            if (fos != null) {
                try {
                    fos.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (fis != null) {
                try {
                    fis.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

 

标签:fis,java,IO,buffer,len,printStackTrace,读入,catch,new
From: https://www.cnblogs.com/lxh-daniel/p/16714372.html

相关文章

  • 【Java UI】HarmonyOS添加日历事件
    ​参考资料CalendarDataHelperEventsRemindersapi讲解添加权限在config.json添加权限代码如下"reqPermissions":[{"name":"ohos.permission.RE......
  • Vue中使用js-audio-recorder实现录音时提示:浏览器不支持getUserMedia!
    场景Vue中使用js-audio-recorder插件实现录音功能并实现上传Blob数据到SpringBoot后台接口:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/126957202上面......
  • VisualStudio 禁用移动文件到文件夹自动修改命名空间功能
    在VisualStudio2022里的某个版本开始,将会在移动文件到其他文件夹时,自动修改命名空间,使用匹配文件夹路径的命名空间。如果这个功能能顺手将其他引用此类型的全部符号同时......
  • JAVA进阶--XML、XML解析、XPath、设计模式--2022年9月19日
    第一节1、XML是什么?XML的全称为(EXtensibleMarkupLanguage),是一种可扩展的标记语言它是一种数据表示格式,可以用于自定义数据格式2、......
  • dotnet 为大型应用接入 ApplicationStartupManager 启动流程框架
    对于大型的应用软件,特别是客户端应用软件,应用启动过程中,需要执行大量的逻辑,包括各个模块的初始化和注册等等逻辑。大型应用软件的启动过程都是非常复杂的,而客户端应用软件......
  • Java第一课
    一、java的运行假设有一个文件为HelloWorld.java运行java的过程为1、执行命令:javacHelloWorld.java这里javac是java编译器,将文件HelloWorld.java编译成HelloWorld.cla......
  • Java【Mybatis】——创建Mybatis Mapper模板
    目的在编码过程中,我们常常需要写一些配置文件。而这些配置文件的格式都是固定的——关键是我通常记不住,也是找地方复制。这种方法可以,但没有必要。因为一种方式,更简便—......
  • css-transition
     2个形状转化时间。就是渐变的时间具体参考这:https://developer.mozilla.org/zh-CN/docs/Web/CSS/CSS_Transitions/Using_CSS_transitions......
  • css position属性
    设置position可以改变位置。有statistic,relative(相对于自己原来的位置),absolute(绝对位置,不以其他作为参考系),fixed(固定位置,不管页面滚动,他永远在原位) css里直接写:po......
  • EF Core Database Migration
    1.准备工作1.1创建项目(以下使用.NETCore3.1)1.1创建项目ASP.NETCoreWebAPI,命名为WebApi1.2新建项目.NETCore的类库,命名为Core1.3新建项目.NETCore的类库,......