java中文件的I/O操作
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操作的更多相关文章
- Java从入门到精通——数据库篇之JAVA中的对Oracle数据库操作
在Java中对Oracle数据库的操作分为两种:一.查询.二.非查询. 下面是我对其进行总结: 一.查询数据 /** * 根据用户代码查询 * @param userId * @return 如果存在 ...
- JAVA中文件与Byte数组相互转换的方法
JAVA中文件与Byte数组相互转换的方法,如下: public class FileUtil { //将文件转换成Byte数组 public static byte[] getBytesByFile ...
- 第69节:Java中数据库的多表操作
第69节:Java中数据库的多表操作 前言 学习数据库的多表操作,去电商行业做项目吧!!! 达叔,理工男,简书作者&全栈工程师,感性理性兼备的写作者,个人独立开发者,我相信你也可以!阅读他的文 ...
- java中文件操作《一》
在日常的开发中我们经常会碰到对文件的操作,在java中对文件的操作都在java.io包下,这个包下的类有File.inputStream.outputStream.FileInputStream.Fi ...
- java中文件的相对路径以及jar中文件的读取
Java中File类的构造函数需要我们传入一个pathname,当我们传入以"/"开头的pathname表示绝对路径,其他均表示相对路径. 一:绝对路径名:是完整的路径名,不需要任 ...
- java 中 “文件” 和 “流” 的简单分析
java 中 FIle 和 流的简单分析 File类 简单File 常用方法 创建一个File 对象,检验文件是否存在,若不存在就创建,然后对File的类的这部分操作进行演示,如文件的名称.大小等 / ...
- Java中文件和I/O
以下内容引用自http://wiki.jikexueyuan.com/project/java/files-and-io.html: 在Java中java.io包含的每一个类几乎都要进行输入和输出操作 ...
- 【IO流】java中文件路径(相对路径、绝对路径)相关类及方法
原文链接:https://blog.csdn.net/Activity_Time/article/details/98034409 1. URL 菜鸟教程:Java URL处理 通常推荐对http等协 ...
- 总结java中文件拷贝剪切的5种方式-JAVA IO基础总结第五篇
本文是Java IO总结系列篇的第5篇,前篇的访问地址如下: 总结java中创建并写文件的5种方式-JAVA IO基础总结第一篇 总结java从文件中读取数据的6种方法-JAVA IO基础总结第二篇 ...
随机推荐
- 【记录】从客户端()中检测到有潜在危险的 Request.Path 值。
从客户端()中检测到有潜在危险的 Request.Path 值. 错误信息: Application_Error Url: www.cnblogs.com/%E5%BA%.... UserAgent: ...
- GitHub上那些值得一试的JAVA开源库--转
原文地址:http://www.jianshu.com/p/ad40e6dd3789 作为一名程序员,你几乎每天都会使用到GitHub上的那些著名Java第三方库,比如Apache Commons,S ...
- Ajax提交参数的值中带有html标签不能提交成功的解决办法(ASP.NET)
最近在公司做资源及文章上传功能遇到一个小问题,被坑了好半天. 该功能就类似利用富文本编辑器发布信息,但是用Ajax提交数据,因此提交参数值中不可避免的含有html标签. 在本地运行代码一直没问题,总是 ...
- android防止内存溢出浅析
Android的虚拟机是基于寄存器的Dalvik,它的最大堆大小一般是16M.但是Android采用的是Java语言编写,所以在很大程度上,Android的内存机制等同于Java的内存机制,在刚开始开 ...
- 内存中OLTP与内存不足
我已经写了好几次内存中OLTP的文章和”为什么我还不推荐内存中OLTP给用户”.今天我想进一步谈下内存中OLTP背后的内存需求,还有如果你内存不够的话会发生什么. 一切都与内存有关! 我们都知道很久之 ...
- UWP开发入门(二十二)——Storyboard和Animation
微博上有同学问我MyerSplash是如何实现那个很炫的图片点亮,然后移动到屏幕中央的效果.惭愧啊,我又不是作者哪里会知道.硬着头皮去GitHub拜读了高手的代码,自愧弗如,比我不知道高到哪里去了…… ...
- 重新编译jdk源码,启用debug信息
我有一个不知道是好还是不好的习惯,搞不懂的一些玩意儿,喜欢调试然后单步执行看这玩意儿到底是怎么运行的. 今天看到正则表达式的时候,appendReplacement()这个方法怎么也看不明白它是怎么工 ...
- git log命令全解析,打log还能这么随心所欲!
git log命令非常强大而好用,在复杂系统的版本管理中扮演着重要的角色,但默认的git log命令显示出的东西实在太丑,不好好打扮一下根本没法见人,打扮好了用alias命令拍个照片,就正式出道了! ...
- Nancy之结合TinyFox调试备忘
最近把一个小项目的数据库换成MongoDB,同时用了MongoRepository 这个开源组件来对数据进行操作. 通过NuGet安装之后,它会自动在web.config文件生成一个连接字符串.但是却 ...
- jQuery AutoComplete在AJAX UpdatePanel环境中PostBack之后无法工作
前些日子,Insus.NET有实现<ASP.NET MVC使用jQuery实现Autocomplete>http://www.cnblogs.com/insus/p/5638895.htm ...