`
林奇峰
  • 浏览: 42507 次
  • 性别: Icon_minigender_1
  • 来自: 濮阳
社区版块
存档分类
最新评论

文件读取写入标准写法

    博客分类:
  • j2se
阅读更多

 文件读取写入标准写法

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);
    }
}

 

 

 

分享到:
评论
1 楼 s332401890 2014-11-19  
谢谢博主分享!!!

相关推荐

    datax支持读取parquet格式文件,支持写入parquet格式文件,修复读取orc读取数据丢失问题

    新增的对Parquet格式的读取和写入支持意味着DataX现在可以更好地融入大数据工作流程,将数据高效地从一个Parquet文件系统迁移到另一个,或者从其他数据源导入到Parquet,为数据分析和处理提供便利。 其次,提到的...

    读取properties返回map并写入文件

    最后,我们通过`store()`方法将Properties对象写入指定的输出文件,同时可以提供一个注释字符串,它会在.properties文件的顶部显示。 总结来说,读取.properties文件并将其内容转化为Map对象,以及将Map对象写回...

    ASP.NET 创建文件、删除文件及写入数据

    1. **声明流书写对象**:用于将内容写入到文件中。 2. **创建文本文件**:指定文件路径和名称。 3. **写入内容**:使用`WriteLine`方法将字符串写入文件。 4. **关闭流对象**:确保资源被正确释放。 ##### 3.2 示例...

    C++ 操作dbf文件(深入剖析dbf文件)

    在提供的`dbf.H`头文件中,可能定义了一个名为`Dbf`的类,包含了打开、关闭、读取和写入DBF文件的方法。例如,`Dbf`类可能会有一个构造函数,接收文件路径作为参数,用来初始化文件句柄;还有`open()`和`close()`...

    缠论笔和线的代码写法,读取mt4的数据,写入mt4文件

    提到的"缠论笔和线的代码写法"涉及到将缠论的理论转化为计算机可理解的指令,这包括读取金融市场的历史数据,如在MetaTrader 4(MT4)平台上的数据,然后根据缠论规则进行处理,并将结果写回至MT4文件。 首先,让...

    python 读取、写入txt文件的示例

    在Python编程语言中,对文本文件的读取和写入是常见的操作,特别是在处理数据或者日志记录时。本文将详细讲解如何使用Python读取和写入TXT文件,并提供具体的示例。 首先,我们来看如何写入TXT文件。Python中使用`...

    易语言大强学易之批量读写配置文件

    在这个教程中,我们将深入探讨如何利用易语言进行配置文件的读取和写入操作,这对于软件开发中的数据管理和用户设置保存是非常重要的。 首先,我们要理解配置文件的作用。配置文件通常用于存储应用的个性化设置、...

    火山PC写出内置资源文件例子

    这与读取内置资源文件有所不同,读取是加载程序启动时已包含的数据,而写出则是在程序运行过程中创建或修改文件。 要写出资源文件,你需要使用火山PC提供的资源操作命令。例如,对于图片资源,可以先通过资源ID加载...

    MFC 包括菜单栏,工具栏,配置文件书写,注册表书写及读取

    虽然公司环境中可能使用日语,但MFC代码本身并不受语言环境影响,只要资源文件正确编码,如UTF-8,程序就能正确显示多语言文本。如果遇到乱码问题,检查资源文件的编码设置,或者确保程序正确处理字符集转换。 总结...

    c语言程序文件的写法-C语言-文件.pdf

    总的来说,C语言通过文件指针和标准库函数提供了丰富的文件操作功能,允许程序员对文件进行创建、读取、写入和追加等操作,从而实现数据的持久化存储和处理。正确理解和使用这些函数对于任何C语言程序员来说都是至关...

    Shell脚本一次读取文件中一行的2种写法

    在Shell脚本编程中,读取文件内容是常见的操作,特别是对于一次性读取文件中的一行数据。本文将详细讲解两种不同的方法来实现这一目标,并同时探讨两种读取文本文件的方法。 ### 方法一:使用`while`循环与`read`...

    java csv 读写框架特殊字符转义.docx

    然后,我们使用 CsvWriteBs.newInstance() 方法将该对象写入到 CSV 文件中,并使用 escape(true) 方法来实现特别字符的转义。 在读取测试中,我们使用 CsvReadBs.newInstance() 方法将 CSV 文件读取到 UserEscape ...

    python读取一个目录下所有txt里面的内容方法

    本文将详细介绍如何使用Python脚本来读取一个指定目录下所有txt文件的内容,并将这些内容追加写入到另一个文本文件中。 首先,我们需要使用Python的内置模块os,它提供了丰富的方法用来处理文件和目录。在我们的...

    读取和写入动画 gif 文件的工具:从 4-D RGB 图像阵列读取和写入动画 gif 的功能-matlab开发

    这些函数可用于读取和写入动画 gif。 它们旨在与各种类型的4-D图像阵列一起使用。 支持的类型包括 RGB/RGBA 数组,以及索引图像。 具有透明内容的索引法师可以通过相应的索引向量指定,或者通过简单地将 alpha 通道...

    一个用于读取和写入电子表格文件的纯PHP库-PHP开发

    支持的文件格式格式读取书写打开文档格式/ OASIS(.ods)✓✓Office Open XML(.xlsx)Excel 2007及更高版本✓✓BIFF 8(.xls)Excel 97及更高版本✓✓BIFF 5(.xls)Excel 95 ✓SpreadsheetML(.xml)Excel 2003✓...

    利用c++在一个文件中产生随机数

    - `#include&lt;fstream&gt;`:此头文件包含了用于文件输入输出操作的所有类,如`ifstream`(用于读取文件)和`ofstream`(用于写入文件)。 - `#include&lt;ctime&gt;`:提供了时间相关的函数,如`time()`,可以获取当前的...

    c#读取excel文件的几种办法.docx

    对于大数据量的Excel文件,可以考虑使用其他库,如EPPlus,它提供了更高效且内存友好的API来读取和写入.xlsx文件。 在实际项目中,根据需求和性能要求,可以选择合适的方法。如果需要读取特定列或行,可以修改SQL...

    vb打开书写器

    除了基本的读写操作,VB还支持其他高级文件操作,如读取文件的元数据、处理大文件、并发写入等。在实际开发中,理解如何有效地利用`StreamWriter`和其他IO类是至关重要的,这不仅可以帮助你实现文件操作,还能确保...

    15-文件-自己使用的C语言教程PPT-适合老师备课或者自学.pptx

    C语言提供多种对文件的读取和写入的函数,这里主要介绍四种常用文件的读写操作函数,它们都在头文件stdio.h定义的: ### 按字符读写的函数fgetc()、fputc() 函数fgetc()的作用是从文件中读取一个字符。函数fputc()...

    操作系统课程设计文件系统

    文件系统提供了文件的创建、删除、读取、写入等基本操作。文件系统的基本概念包括文件、目录、磁盘、文件描述符等。 文件系统的设计要求包括:①在系统中用一个文件来模拟一个磁盘;②此系统至少有:Create、delete...

Global site tag (gtag.js) - Google Analytics