java中文件的读写操作

(一)

(1)java中文件的字节转成字符读操作

     FileInputStream fStream = new FileInputStream("test.txt");//此时为字节流
byte[] b = new byte[31];//定义字节数组存储从文件夹中读取的数据,大小最多31字节

fStream.read(b);//将test.txt的数据读到b中

String line = new String(b,"UTF-8");//将字节转换成字符

System.out.println(line);//打印输出

  以上是简单的字节转字符输出的例子,当数据量较大时,应该重复读取

while(fStream.read(b)!=-1)

{

String line=new String(b,"UTF-8");

System.out.println(line);

}

(2

)java中文件的字符转为字节写操作

FileOutputStream fos = new FileOutputStream("test.txt");

String line="hello world";

byte b[]=line.getBytes();//将字符转换成字节

fos.write(b);通过字节流写入文件 fos.close();//关闭

(二)

利用缓冲区来进行文件的写入和写出,都是以缓冲区为中介,java.io.BufferedReader和java.io.BufferedWriter类各拥有8192字符的缓冲区。当BufferedReader在读取文本文件时,会先尽量从文件中读入字符数据并置入缓冲区,而之后若使用read()方法,会先从缓冲区中进行读取。如果缓冲区数据不足,才会再从文件中读取,使用BufferedWriter时,写入的数据并不会先输出到目的地,而是先存储至缓冲区中。如果缓冲区中的数据满了,才会一次对目的地进行写出。

(1)利用缓冲区向文件写入数据

String line="hello";

FileOutputStream fos = new FileOutputStream("test.txt");

BufferedWriter bfr = new BufferedWriter(new OutputStreamWriter(fos));//

bfr.write(line);//向缓冲区写入数据

bfr.flush();//清理缓冲区,将数据全部传入文件

bfr.close();//关闭缓冲区

fos.close();//关闭文件输出流

 为什么用到flush(),因为缓冲区对于小数据,可能要等到存满一定量的数据才会向文件写入,造成一定的数据滞留,利用flush可以将滞留的数据一起输送给文件,防止文件数据的丢失。

(2)利用缓冲区从文件中读取数据

 FileInputStream fis = new FileInputStream("test.txt");

BufferedReader bfr = new BufferedReader(new InputStreamReader(fis));

String line=null;

while((line=bfr.readLine())!=null)//从读缓冲区一行一行的读取数据
{
System.out.println(line);
}
bfr.flush();//清空缓冲区
bfr.close();//关闭缓冲区 fis.close();//关闭文件输入流

 bfr.readline()是通过从缓冲区以行为单位读取数据,BufferReader是通过将字节转换成字符类。

另外关于文件的写入不覆盖新的数据,方法

FileOutputStream os = new FileOutputStream("test.txt", true);//true表示每次添加到文件末尾,从而不删除原有数据

(三)关于FileReader和FileWriter

(1)FileReader

FileReader类创建了一个可以读取文件内容的Reader类。比较适用于纯文本文件

例如,从一个文件逐行读取并把它输出到标准输入流。

import  java.io.*;

    class FileReaderDemo {

        public static void main (String args[ ] ) throws Exception {

            FileReader fr =  new FileReader ("c://in.txt");

            BufferedReader br = new BufferedReader (fr);

            String s;

             while ((s = br.readLine() )!=null) {

                 System.out.prinln (s);

              }

            fr.close();

      }

    }

(2)FileWriter

FileWriter 创建一个可以写文件的Writer类。构造函数:

FileWriter (String filePath)  filePath 是一个文件的完整路径

FileWriter(String filePath, boolean append)  如果append为true ,输出是附加到文件尾的,即不覆盖原数据

FileWriter(File fileObj)  是描述该文件的File对象

  FileWriter fr = new FileWriter("test.txt");
BufferedWriter bfw = new BufferedWriter(fr);
String linString="hello World";
bfw.write(linString);
bfw.flush();
bfw.close();
fr.close();

  

综上只是简单叙述了常见读写文件的方法,欢迎指正

java中文件的I/O操作的更多相关文章

  1. Java从入门到精通——数据库篇之JAVA中的对Oracle数据库操作

    在Java中对Oracle数据库的操作分为两种:一.查询.二.非查询. 下面是我对其进行总结: 一.查询数据 /** * 根据用户代码查询 * @param userId * @return 如果存在 ...

  2. JAVA中文件与Byte数组相互转换的方法

    JAVA中文件与Byte数组相互转换的方法,如下: public class FileUtil { //将文件转换成Byte数组 public static byte[] getBytesByFile ...

  3. 第69节:Java中数据库的多表操作

    第69节:Java中数据库的多表操作 前言 学习数据库的多表操作,去电商行业做项目吧!!! 达叔,理工男,简书作者&全栈工程师,感性理性兼备的写作者,个人独立开发者,我相信你也可以!阅读他的文 ...

  4. java中文件操作《一》

    在日常的开发中我们经常会碰到对文件的操作,在java中对文件的操作都在java.io包下,这个包下的类有File.inputStream.outputStream.FileInputStream.Fi ...

  5. java中文件的相对路径以及jar中文件的读取

    Java中File类的构造函数需要我们传入一个pathname,当我们传入以"/"开头的pathname表示绝对路径,其他均表示相对路径. 一:绝对路径名:是完整的路径名,不需要任 ...

  6. java 中 “文件” 和 “流” 的简单分析

    java 中 FIle 和 流的简单分析 File类 简单File 常用方法 创建一个File 对象,检验文件是否存在,若不存在就创建,然后对File的类的这部分操作进行演示,如文件的名称.大小等 / ...

  7. Java中文件和I/O

    以下内容引用自http://wiki.jikexueyuan.com/project/java/files-and-io.html: 在Java中java.io包含的每一个类几乎都要进行输入和输出操作 ...

  8. 【IO流】java中文件路径(相对路径、绝对路径)相关类及方法

    原文链接:https://blog.csdn.net/Activity_Time/article/details/98034409 1. URL 菜鸟教程:Java URL处理 通常推荐对http等协 ...

  9. 总结java中文件拷贝剪切的5种方式-JAVA IO基础总结第五篇

    本文是Java IO总结系列篇的第5篇,前篇的访问地址如下: 总结java中创建并写文件的5种方式-JAVA IO基础总结第一篇 总结java从文件中读取数据的6种方法-JAVA IO基础总结第二篇 ...

随机推荐

  1. PowerPoint基础

    一.基础 默认后缀ppt,pptx office2003和以后的版本只支持ppt, 可以将pptx另存为ppt97-2003 二.修改PPT尺寸 三.新建幻灯片 四.字体与段落设置 五.主题与字体 六 ...

  2. ASP.NET实现微信功能(2)(服务号高级群发)

    前面写了一篇文章,关于微信的:http://www.cnblogs.com/kmsfan/p/4047097.html 今天打算来写本系列的第二批文章,服务号后台群发. 在写本篇文章之前,我们先来看看 ...

  3. 【集合框架】JDK1.8源码分析之LinkedHashMap(二)

    一.前言 前面我们已经分析了HashMap的源码,已经知道了HashMap可以用在哪种场合,如果这样一种情形,我们需要按照元素插入的顺序来访问元素,此时,LinkedHashMap就派上用场了,它保存 ...

  4. 详解PHP输入流php://input

    在使用xml-rpc的时候,server端获取client数据,主要是通过php输入流input,而不是$_POST数组.所以,这里主要探讨php输入流php://input 对一php://inpu ...

  5. CentOS下VMware用桥接模式,静态ip上外网

    15年的时候,写过一篇博客:VMware中网络设置之Bridged  也是关于linux下vmware桥接模式.静态ip上外网的配置,不过当时更多的是用图形界面来实现的,通用性不强.生产环境,极少有l ...

  6. 使用签名来保证ASP.NET MVC OR WEBAPI的接口安全

    当我们开发一款App的时候,App需要跟后台服务进行通信获取或者提交数据.如果我们没有完善的安全机制则很容易被别用心的人伪造请求而篡改数据. 所以我们需要使用某种安全机制来保证请求的合法.现在最常用的 ...

  7. Entity FrameWork 6帮助类

    public class BaseDAL { string strConn = ""; public BaseDAL(string connString) { strConn = ...

  8. 背水一战 Windows 10 (23) - MVVM: 通过 Binding 或 x:Bind 结合 Command 实现,通过 ButtonBase 触发命令

    [源码下载] 背水一战 Windows 10 (23) - MVVM: 通过 Binding 或 x:Bind 结合 Command 实现,通过 ButtonBase 触发命令 作者:webabcd ...

  9. 最短路径之Floyd算法

    Floyd算法又称弗洛伊德算法,也叫做Floyd's algorithm,Roy–Warshall algorithm,Roy–Floyd algorithm, WFI algorithm. Floy ...

  10. AngularJS学习笔记(1) - AngularJS入门

    什么是AngularJS? AngularJS是建立在jQuery的一个轻量级版本之上的MVC框架.MVC将业务逻辑代码和视图.模型相分离.AngularJS提供的所有功能都可以通过使用JavaScr ...