JavaSE:关于File输入输出流的一些思考

示例代码

以下主要展示了以下几种写法:

  • 一次一个字节读取
  • 一次一个字节数组读取
  • 字符串写入文件
  • 文件内容写入字符串

我相信新手对于第一种写法和第二种写法经常混淆,第一种的int其实质就是读取的字节内容,而第二种int代表的是读取内容的字节数量
虽然写法十分相近,但是int的意义是完全不一样的。

package demo.xyz.yq56.se.io;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.charset.StandardCharsets;

/**
 * @author Yi Qiang
 * @version 1.0.0
 * @date 2021/2/25 0:12
 */
public class BasicIoOperation {

    private static final String FROM_FILE = "src/demo/xyz/yq56/se/io/from.txt";
    private static final String INT_FILE = "src/demo/xyz/yq56/se/io/int.txt";
    private static final String BYTE_FILE = "src/demo/xyz/yq56/se/io/bytes.txt";
    private static final String OUT_STRING = "src/demo/xyz/yq56/se/io/outString.txt";


    public static void main(String[] args) {
        //字节形式
        operationByInt();
        System.out.println("\n====================================================================================");
        //字节数组形式
        operationByBytes();
        //字符串写入文件
        operationOutString();
        //从文件流中取出内容,并拼接成String
        System.out.println("\n====================================================================================");
        operationInString();
    }

    private static void operationByInt() {
        try (FileOutputStream fileOutputStream = new FileOutputStream(INT_FILE);
             FileInputStream fileInputStream = new FileInputStream(FROM_FILE)) {
            // readByte 读取的字节值
            int readByte;
            // 当读取的字节不等于-1,实际就是文件还有未读取完的内容
            while ((readByte = fileInputStream.read()) != -1) {
                //write方法把字节readByte读取到输出流中
                System.out.print(readByte + " ");
                fileOutputStream.write(readByte);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    private static void operationByBytes() {
        try (
                FileOutputStream fileOutputStream = new FileOutputStream(BYTE_FILE);
                FileInputStream fileInputStream = new FileInputStream(FROM_FILE)) {
            //从文件流以字节数组的形式拿出来
            byte[] bytes = new byte[1024];
            //readCount代表的是读取字节的个数
            int readCount;
            // 读取的字节数不等于-1,实际就是文件还有未读取完的内容
            // read方法会把内容读进字节数组里面
            while ((readCount = fileInputStream.read(bytes)) != -1) {
                //write方法把字节数组bytes里面的内容读取到输出流中,每次读取readCount个字节
                for (int i = 0; i < readCount; i++) {
                    System.out.print(Byte.toUnsignedInt(bytes[i]) + " ");
                }
                fileOutputStream.write(bytes, 0, readCount);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    private static void operationOutString() {
        try (FileOutputStream fileOutputStream = new FileOutputStream(OUT_STRING)) {
            String outString = "技术顶天的同时,科大讯飞也一直追求产业立地,让领先的技术能够落地并服务于亿万用户,因此,同时还身兼讯飞研究院院长、消费者事业群总裁两个职务的胡国平也提出,“改变世界的不是技术,而是产品”,所以讯飞研究院一直以来都坚持“从技术中来,到产品中去”,必须要通过产品,才能给消费者带来可感知的人工智能技术的价值。过去十年中,科大讯飞针对不同应用场景推出了多款面向消费者的智能硬件产品,涵盖了家庭场景、学习场景、会议场景、办公场景等等。其中发布于2019年5月的第一代智能办公本X1就是专门面向办公场景而推出的智能办公设备,它正是从用户角度出发,发现很多办公人士依然保留了用笔记录的习惯,但传统记录方式存在“效率低、保存方式单一”等诸多弊端,掣肘了互联网时代办公场景对高效记录的需求,因而科大讯飞将手写与人工智能技术相结合,推出了这样一款全新的办公用品,提升了广大办公人群的工作效率。";
            fileOutputStream.write(outString.getBytes(StandardCharsets.UTF_8));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    private static void operationInString() {
        try (FileInputStream fileInputStream = new FileInputStream(FROM_FILE)) {
            byte[] bytes = new byte[1024];
            int readCount;
            StringBuilder stringBuilder = new StringBuilder();
            while ((readCount = fileInputStream.read(bytes)) != -1) {
                String string = new String(bytes, 0, readCount, StandardCharsets.UTF_8);
                stringBuilder.append(string);
            }
            System.out.println(stringBuilder.toString());
        } catch (IOException e) {
            e.printStackTrace();
        }
    }


}

控制台输出结果

从控制台前两段数字对比可以看出,虽然第一种形式是int,但其实质还是一个byte
理解了这个之后,对于此类操作就很容易理解了

230 138 128 230 156 175 233 161 182 229 164 169 231 154 132 229 144 140 230 151 182 239 188 140 231 167 145 229 164 167 232 174 175 233 163 158 228 185 159 228 184 128 231 155 180 232 191 189 230 177 130 228 186 167 228 184 154 231 171 139 229 156 176 239 188 140 232 174 169 233 162 134 229 133 136 231 154 132 230 138 128 230 156 175 232 131 189 229 164 159 232 144 189 229 156 176 229 185 182 230 156 141 229 138 161 228 186 142 228 186 191 228 184 135 231 148 168 230 136 183 239 188 140 229 155 160 230 173 164 239 188 140 229 144 140 230 151 182 232 191 152 232 186 171 229 133 188 232 174 175 233 163 158 231 160 148 231 169 182 233 153 162 233 153 162 233 149 191 227 128 129 230 182 136 232 180 185 232 128 133 228 186 139 228 184 154 231 190 164 230 128 187 232 163 129 228 184 164 228 184 170 232 129 140 229 138 161 231 154 132 232 131 161 229 155 189 229 185 179 228 185 159 230 143 144 229 135 186 239 188 140 226 128 156 230 148 185 229 143 152 228 184 150 231 149 140 231 154 132 228 184 141 230 152 175 230 138 128 230 156 175 239 188 140 232 128 140 230 152 175 228 186 167 229 147 129 226 128 157 239 188 140 230 137 128 228 187 165 232 174 175 233 163 158 231 160 148 231 169 182 233 153 162 228 184 128 231 155 180 228 187 165 230 157 165 233 131 189 229 157 154 230 140 129 226 128 156 228 187 142 230 138 128 230 156 175 228 184 173 230 157 165 239 188 140 229 136 176 228 186 167 229 147 129 228 184 173 229 142 187 226 128 157 239 188 140 229 191 133 233 161 187 232 166 129 233 128 154 232 191 135 228 186 167 229 147 129 239 188 140 230 137 141 232 131 189 231 187 153 230 182 136 232 180 185 232 128 133 229 184 166 230 157 165 229 143 175 230 132 159 231 159 165 231 154 132 228 186 186 229 183 165 230 153 186 232 131 189 230 138 128 230 156 175 231 154 132 228 187 183 229 128 188 227 128 130 232 191 135 229 142 187 229 141 129 229 185 180 228 184 173 239 188 140 231 167 145 229 164 167 232 174 175 233 163 158 233 146 136 229 175 185 228 184 141 229 144 140 229 186 148 231 148 168 229 156 186 230 153 175 230 142 168 229 135 186 228 186 134 229 164 154 230 172 190 233 157 162 229 144 145 230 182 136 232 180 185 232 128 133 231 154 132 230 153 186 232 131 189 231 161 172 228 187 182 228 186 167 229 147 129 239 188 140 230 182 181 231 155 150 228 186 134 229 174 182 229 186 173 229 156 186 230 153 175 227 128 129 229 173 166 228 185 160 229 156 186 230 153 175 227 128 129 228 188 154 232 174 174 229 156 186 230 153 175 227 128 129 229 138 158 229 133 172 229 156 186 230 153 175 231 173 137 231 173 137 227 128 130 229 133 182 228 184 173 229 143 145 229 184 131 228 186 142 50 48 49 57 229 185 180 53 230 156 136 231 154 132 231 172 172 228 184 128 228 187 163 230 153 186 232 131 189 229 138 158 229 133 172 230 156 172 88 49 229 176 177 230 152 175 228 184 147 233 151 168 233 157 162 229 144 145 229 138 158 229 133 172 229 156 186 230 153 175 232 128 140 230 142 168 229 135 186 231 154 132 230 153 186 232 131 189 229 138 158 229 133 172 232 174 190 229 164 135 239 188 140 229 174 131 230 173 163 230 152 175 228 187 142 231 148 168 230 136 183 232 167 146 229 186 166 229 135 186 229 143 145 239 188 140 229 143 145 231 142 176 229 190 136 229 164 154 229 138 158 229 133 172 228 186 186 229 163 171 228 190 157 231 132 182 228 191 157 231 149 153 228 186 134 231 148 168 231 172 148 232 174 176 229 189 149 231 154 132 228 185 160 230 131 175 239 188 140 228 189 134 228 188 160 231 187 159 232 174 176 229 189 149 230 150 185 229 188 143 229 173 152 229 156 168 226 128 156 230 149 136 231 142 135 228 189 142 227 128 129 228 191 157 229 173 152 230 150 185 229 188 143 229 141 149 228 184 128 226 128 157 231 173 137 232 175 184 229 164 154 229 188 138 231 171 175 239 188 140 230 142 163 232 130 152 228 186 134 228 186 146 232 129 148 231 189 145 230 151 182 228 187 163 229 138 158 229 133 172 229 156 186 230 153 175 229 175 185 233 171 152 230 149 136 232 174 176 229 189 149 231 154 132 233 156 128 230 177 130 239 188 140 229 155 160 232 128 140 231 167 145 229 164 167 232 174 175 233 163 158 229 176 134 230 137 139 229 134 153 228 184 142 228 186 186 229 183 165 230 153 186 232 131 189 230 138 128 230 156 175 231 155 184 231 187 147 229 144 136 239 188 140 230 142 168 229 135 186 228 186 134 232 191 153 230 160 183 228 184 128 230 172 190 229 133 168 230 150 176 231 154 132 229 138 158 229 133 172 231 148 168 229 147 129 239 188 140 230 143 144 229 141 135 228 186 134 229 185 191 229 164 167 229 138 158 229 133 172 228 186 186 231 190 164 231 154 132 229 183 165 228 189 156 230 149 136 231 142 135 227 128 130 13 10 13 10 
====================================================================================
230 138 128 230 156 175 233 161 182 229 164 169 231 154 132 229 144 140 230 151 182 239 188 140 231 167 145 229 164 167 232 174 175 233 163 158 228 185 159 228 184 128 231 155 180 232 191 189 230 177 130 228 186 167 228 184 154 231 171 139 229 156 176 239 188 140 232 174 169 233 162 134 229 133 136 231 154 132 230 138 128 230 156 175 232 131 189 229 164 159 232 144 189 229 156 176 229 185 182 230 156 141 229 138 161 228 186 142 228 186 191 228 184 135 231 148 168 230 136 183 239 188 140 229 155 160 230 173 164 239 188 140 229 144 140 230 151 182 232 191 152 232 186 171 229 133 188 232 174 175 233 163 158 231 160 148 231 169 182 233 153 162 233 153 162 233 149 191 227 128 129 230 182 136 232 180 185 232 128 133 228 186 139 228 184 154 231 190 164 230 128 187 232 163 129 228 184 164 228 184 170 232 129 140 229 138 161 231 154 132 232 131 161 229 155 189 229 185 179 228 185 159 230 143 144 229 135 186 239 188 140 226 128 156 230 148 185 229 143 152 228 184 150 231 149 140 231 154 132 228 184 141 230 152 175 230 138 128 230 156 175 239 188 140 232 128 140 230 152 175 228 186 167 229 147 129 226 128 157 239 188 140 230 137 128 228 187 165 232 174 175 233 163 158 231 160 148 231 169 182 233 153 162 228 184 128 231 155 180 228 187 165 230 157 165 233 131 189 229 157 154 230 140 129 226 128 156 228 187 142 230 138 128 230 156 175 228 184 173 230 157 165 239 188 140 229 136 176 228 186 167 229 147 129 228 184 173 229 142 187 226 128 157 239 188 140 229 191 133 233 161 187 232 166 129 233 128 154 232 191 135 228 186 167 229 147 129 239 188 140 230 137 141 232 131 189 231 187 153 230 182 136 232 180 185 232 128 133 229 184 166 230 157 165 229 143 175 230 132 159 231 159 165 231 154 132 228 186 186 229 183 165 230 153 186 232 131 189 230 138 128 230 156 175 231 154 132 228 187 183 229 128 188 227 128 130 232 191 135 229 142 187 229 141 129 229 185 180 228 184 173 239 188 140 231 167 145 229 164 167 232 174 175 233 163 158 233 146 136 229 175 185 228 184 141 229 144 140 229 186 148 231 148 168 229 156 186 230 153 175 230 142 168 229 135 186 228 186 134 229 164 154 230 172 190 233 157 162 229 144 145 230 182 136 232 180 185 232 128 133 231 154 132 230 153 186 232 131 189 231 161 172 228 187 182 228 186 167 229 147 129 239 188 140 230 182 181 231 155 150 228 186 134 229 174 182 229 186 173 229 156 186 230 153 175 227 128 129 229 173 166 228 185 160 229 156 186 230 153 175 227 128 129 228 188 154 232 174 174 229 156 186 230 153 175 227 128 129 229 138 158 229 133 172 229 156 186 230 153 175 231 173 137 231 173 137 227 128 130 229 133 182 228 184 173 229 143 145 229 184 131 228 186 142 50 48 49 57 229 185 180 53 230 156 136 231 154 132 231 172 172 228 184 128 228 187 163 230 153 186 232 131 189 229 138 158 229 133 172 230 156 172 88 49 229 176 177 230 152 175 228 184 147 233 151 168 233 157 162 229 144 145 229 138 158 229 133 172 229 156 186 230 153 175 232 128 140 230 142 168 229 135 186 231 154 132 230 153 186 232 131 189 229 138 158 229 133 172 232 174 190 229 164 135 239 188 140 229 174 131 230 173 163 230 152 175 228 187 142 231 148 168 230 136 183 232 167 146 229 186 166 229 135 186 229 143 145 239 188 140 229 143 145 231 142 176 229 190 136 229 164 154 229 138 158 229 133 172 228 186 186 229 163 171 228 190 157 231 132 182 228 191 157 231 149 153 228 186 134 231 148 168 231 172 148 232 174 176 229 189 149 231 154 132 228 185 160 230 131 175 239 188 140 228 189 134 228 188 160 231 187 159 232 174 176 229 189 149 230 150 185 229 188 143 229 173 152 229 156 168 226 128 156 230 149 136 231 142 135 228 189 142 227 128 129 228 191 157 229 173 152 230 150 185 229 188 143 229 141 149 228 184 128 226 128 157 231 173 137 232 175 184 229 164 154 229 188 138 231 171 175 239 188 140 230 142 163 232 130 152 228 186 134 228 186 146 232 129 148 231 189 145 230 151 182 228 187 163 229 138 158 229 133 172 229 156 186 230 153 175 229 175 185 233 171 152 230 149 136 232 174 176 229 189 149 231 154 132 233 156 128 230 177 130 239 188 140 229 155 160 232 128 140 231 167 145 229 164 167 232 174 175 233 163 158 229 176 134 230 137 139 229 134 153 228 184 142 228 186 186 229 183 165 230 153 186 232 131 189 230 138 128 230 156 175 231 155 184 231 187 147 229 144 136 239 188 140 230 142 168 229 135 186 228 186 134 232 191 153 230 160 183 228 184 128 230 172 190 229 133 168 230 150 176 231 154 132 229 138 158 229 133 172 231 148 168 229 147 129 239 188 140 230 143 144 229 141 135 228 186 134 229 185 191 229 164 167 229 138 158 229 133 172 228 186 186 231 190 164 231 154 132 229 183 165 228 189 156 230 149 136 231 142 135 227 128 130 13 10 13 10 
====================================================================================
技术顶天的同时,科大讯飞也一直追求产业立地,让领先的技术能够落地并服务于亿万用户,因此,同时还身兼讯飞研究院院长、消费者事业群总裁两个职务的胡国平也提出,“改变世界的不是技术,而是产品”,所以讯飞研究院一直以来都坚持“从技术中来,到产品中去”,必须要通过产品,才能给消费者带来可感知的人工智能技术的价值。过去十年中,科大讯飞针对不同应用场景推出了多款面向消费者的智能硬件产品,涵盖了家庭场景、学习场景、会议场景、办公场景等等。其中发布于20195月的第一代智能办公本X1就是专门面向办公场景而推出的智能办公设备,它正是从用户角度出发,发现很多办公人士依然保留了用笔记录的习惯,但传统记录方式存在“效率低、保存方式单一”等诸多弊端,掣肘了互联网时代办公场景对高效记录的需求,因而科大讯飞将手写与人工智能技术相结合,推出了这样一款全新的办公用品,提升了广大办公人群的工作效率。



Process finished with exit code 0

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值