文件读取写入标准写法
public void copy(String src , String des){ InputStream in = null; OutputStream out = null; try { in = new FileInputStream(src);//多态应用,FileInputStream继承InputStream out = new FileOutputStream(des);//多态应用,FileOutputStream继承OutputStream byte[] buf = new byte[1024];//申请1M内存,用于存放读入的数据,其实是作为缓冲(cache) int n ; while((n = in.read(buf))> 0){// read(buf))指将数据先读入buf内,当buf满时,跳出read方法,并返回buf的容量,然后赋值给n;当buf不满但已经读取完毕就返回buf的实际存放字节数 out.write(buf, 0, n); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }finally{ try { in.close();//close()方法本身就有可能抛出异常,故而用try catch 包裹;如果抛出异常in就不能正常关闭但是资源还被占用,故而在finally里 in=null; //无论抛出异常与否都将in赋值null,这样有利于垃圾回收机制将其回收;我其实挺建议这样写,涉及到不用资源时,先释放资源再赋值null这样使得垃圾回收更快 out.close(); } catch (IOException e) { e.printStackTrace(); }finally{ in = null; out = null; } } }
源码解析:
public abstract class InputStream implements Closeable { private static final int MAX_SKIP_BUFFER_SIZE = 2048; public abstract int read() throws IOException; public int read(byte b[]) throws IOException { return read(b, 0, b.length); } public int read(byte b[], int off, int len) throws IOException { if (b == null) { throw new NullPointerException(); } else if (off < 0 || len < 0 || len > b.length - off) { throw new IndexOutOfBoundsException(); } else if (len == 0) { return 0; } int c = read();//读取一个字节,这也是为什么inputStream是字节流的原因 if (c == -1) { return -1; } b[off] = (byte)c; int i = 1; try { for (; i < len ; i++) { c = read(); if (c == -1) { break; } b[off + i] = (byte)c; } } catch (IOException ee) { } return i;// read(buf))指将数据先读入buf内,当buf满时,跳出read方法,并返回buf的容量,然后赋值给n;当buf不满但已经读取完毕就返回buf的实际存放字节数 } }
public class FileInputStream extends InputStream//继承自InputStream { public FileInputStream(String name) throws FileNotFoundException { this(name != null ? new File(name) : null); } public native int read() throws IOException;//调用本地方法和系统资源,读取一个字节,这也是为什么inputStream和其子类 是字节流的原因 private native int readBytes(byte b[], int off, int len) throws IOException;//功能和inputStream的read(byte b[], int off, int len)方法一样,区别就是它是本地方法 public int read(byte b[]) throws IOException { return readBytes(b, 0, b.length); } public int read(byte b[], int off, int len) throws IOException { return readBytes(b, off, len); } }
相关推荐
读取properties返回map并写入文件
缠论笔和线的代码写法,读取mt4的数据,写入mt4文件
写入文件 使用open()函数和write()函数 但是有两种写法,分别是’a’和’w’ ‘a’ 表示写入文件 若无该文件会直接创建一个 如果存在这个文件,会接着已有的内容的后面写入 with open('D:\\test.txt','a',encoding=...
这些函数可用于读取和写入动画 gif。 它们旨在与各种类型的4-D图像阵列一起使用。 支持的类型包括 RGB/RGBA 数组,以及索引图像。 具有透明内容的索引法师可以通过相应的索引向量指定,或者通过简单地将 alpha 通道...
支持的文件格式格式读取书写打开文档格式/ OASIS(.ods)✓✓Office Open XML(.xlsx)Excel 2007及更高版本✓✓BIFF 8(.xls)Excel 97及更高版本✓✓BIFF 5(.xls)Excel 95 ✓SpreadsheetML(.xml)Excel 2003✓...
主要介绍了Shell脚本一次读取文件中一行的2种写法,本文还同时讲解了Shell读取文本文件的2种方法,需要的朋友可以参考下
本篇文章主要介绍了linux 环境 mysql写入中文报错的相关知识。具有很好的参考价值。下面跟着小编一起来看下吧
参考STC公司例程,编写模块化的驱动文件,实现串口读取单片机片上EEPROM。
在G:/PythonPractise文件夹下新建一个名为record.txt的文本文档,写入如下图所示四行内容并保存。 打开python3的idle,开始写代码。 方法一代码和运行结果如下: 如上面运行结果所示,上面的结果是省略end=的写法,...
总结: 使用PHP下载文件的操作需要给出四个header(),可以参考我的另一篇博文:PHP如何实现...如果不指定的话,就会将整个文件全部写入内存当中,再一次性的讲数据传送给客户端 通过feof()函数,可以判断要读取的文件
STC8单片机读写内部EEPROM KEIL工程文件源码: /* STC8 内部EEPROM测试 从手册717页上可以看出 STC8的 EEPROM空间为1k 地址在0000h-03ffh 地址也是1024的大小 次程序结合手册 编写 大同小异 程序的主要目的是 先清楚...
scrapy爬虫生成的结果(json文件),读取并写入数据库。 如果是生成其他格式的文件,如csv,写法大同小异,只是读取文件的过程不同
它将内容写入临时文件。 由于默认情况下禁用共享字符串,因此会增加文件大小的开销。 如果处理字符串值,启用共享字符串可能会消耗更多的堆。 因此,创建了fastexcel来提供具有以下关键点的替代方法: 有限的...
(内存内功能) 写法 提升权限 内存.提升权限 打开进程 msgbox 内存.打开进程("notepad.exe") 写入内存 内存.写入内存 "notepad.exe",1HD65441,999,4 写入一级偏移 内存.写入内存 "notepad.exe",1HD65441,868,999,4...
简介finalfusion是一个用于在Rust中读取,书写和使用嵌入的板条箱。 finalfusion主要以其自己的格式工作,该格式支持多种功能。 此外,还支持fastText,word2vec和GloVe文件格式。 从0.11.0开始,finalfusion是API...
因为之前为一家银行做财政报表打印,因为数据太长,381的纸张打印不下,dos打印、rdlc等等试了都很麻烦,所以后面就将内容插入word中,再在代码中写一些控制模板的代码,使得可以再381上打印下,这是个测试的demo
基于Minic的语法分析器,javacc书写,实现了文件的读取和写入操作加压后可直接导入运行
Dobot Magician ROS控件用于语音识别,阅读,书写和绘图一个包含对dobot魔术师的ROS控制的存储库,以进行读取,写入和绘制操作。它集成了语音识别和文本检测功能,为用户通过ROS与dobot魔术师合作提供了起点。此存储...
这个流程的意义是在 src 目录内搜索以 .less 为扩展名的文件,并读取其内容,转换为CSS格式,并写入 output 的对应目录内。比如 src/style/foo.less,转换后写入 output/style/foo.less。现在,我们把除了...
自己写的小程序,主要读取安捷伦34410A的电压及电流,其他参数可以参考这两个值的写法将命令写入即可。