java文件的读写操作
java文件的读写操作主要是对输入流和输出流的操作,由于流的分类很多,所以概念很容易模糊,基于此,对于流的读写操作做一个小结。
1、根据数据的流向来分:
输出流:是用来写数据的,是由程序(内存)--->外界设备
输入流:是用来读数据的,是由外界设备--->程序(内存)
如何区分:一般来说输入流带有Input,输出流带有Output
2、根据流数据的格式来分:
字节流:处理声音或者图片等二进制的数据的流,比如InputStream
字符流:处理文本数据(如txt文件)的流,比如InputStreamReader
如何区分:可用高低端流来区分,所有的低端流都是字节流,所有的高端流都是字符流

/**
* @Description: 获得控制台用户输入的信息
*/
public String getInputMessage() throws IOException{
System.out.println("请输入您的命令∶");
byte buffer[]=new byte[1024];
int count=System.in.read(buffer);
char[] ch=new char[count-2];//最后两位为结束符,删去不要
for(int i=0;i<count-2;i++)
ch[i]=(char)buffer[i];
String str=new String(ch);
return str;
}
/**
*
*
* @param srcFile 文件地址 例如:"f:" + File.separator + "testoyy"+File.separator+"test2.txt"
* @param content 写入文件的内容
* @throws Exception
*
* @Description: 将内容写入指定文件
*/
public void writeToTxtFile(String srcFile, String content) throws Exception{
File file = new File(srcFile) ;
//判断文件是否存在
if (!file.exists() != false)
{
file.createNewFile();
}
Writer out = null ; // 字符输出流
out = new OutputStreamWriter(new FileOutputStream(file)) ; // 字节流变为字符流
out.write(content) ; // 使用字符流输出
out.close() ;
}
/**
* 指定编码格式写文件
*
* @param srcFile 读取该文件的内容的地址 例如:"F:\\testoyy\\test.txt";
* @param srcCode 读取文件的编码 例如: "utf-8";
* @param distFile 写入文件内容的地址 例如:"F:\\testoyy\\test1.txt";
* @param distCode 写入文件的编码 例如: "utf-8";
* @return
* @throws Exception
*
* @Description: 指定编码格式将一个文件的内容复制到另外一个文件中
*/
public boolean writeToTxtFile(String srcFile, String srcCode,
String distFile, String distCode) throws Exception
{
//输出流
Writer writer = null;
try
{
File dist_File = new File(distFile);
//判断文件是否存在
if (!dist_File.exists() != false)
{
dist_File.createNewFile();
}
writer = new OutputStreamWriter(new FileOutputStream(dist_File),
"GBK");
File src_File = new File(srcFile);
//输入流
InputStreamReader read = new InputStreamReader(new FileInputStream(
src_File));
BufferedReader reader = new BufferedReader(read);
String line;
//逐行读取
while ((line = reader.readLine()) != null)
{
//写入文件内
writer.write(line);
}
} catch (Exception e)
{
// EmpExecutionContext.error(e,"指定编码格式写文件异常!");
throw e;
} finally
{
//关闭流
writer.close();
}
//返回结果
return true;
}
/**
* 以字符为单位读取文件
* @param fileName 文件地址 例如:"f:" + File.separator + "testoyy"+File.separator+"test2.txt"
* @return
*/
public String readFileByChars(String fileName)
{
File file = new File(fileName);
StringBuffer fileContent=new StringBuffer();
Reader reader = null;
try
{
reader = new InputStreamReader(new FileInputStream(file));
int tempchar;
// 一次读一个字节
while ((tempchar = reader.read()) != -1)
{
fileContent.append((char)tempchar);
}
//关闭流
reader.close();
} catch (Exception e)
{
//异常信息打印
//EmpExecutionContext.error(e,"以字符为单位读取文件异常!");
}finally
{
if (reader != null)
{
try
{
//关闭流
reader.close();
} catch (IOException e1)
{
//异常信息打印
//EmpExecutionContext.error(e1,"关闭流异常");
}
}
}
//返回读取到的数据
return fileContent.toString();
}
/**
* 读取第一行数据
* @param fileName
* @return
*/
public String readFileFirstLine(String fileName)
{
File filee = new File(fileName);
String tempString = null;
BufferedReader brr = null;
try
{
brr = new BufferedReader(new FileReader(filee));
tempString = brr.readLine();
brr.close();
} catch (IOException e)
{
//异常信息打印
//EmpExecutionContext.error(e,"读取文件第一行数据异常!");
} finally
{
if (brr != null)
{
try
{
//关闭流
brr.close();
} catch (IOException ioe)
{
//EmpExecutionContext.error(ioe,"文件流关闭异常!");
}
}
}
//返回数据
return tempString;
}
/**
* 以行为单位读取文件
* @param fileName 文件路径名 例如:"f:" + File.separator + "testoyy"+File.separator+"test2.txt"
* @return 文件内容
*/
public String readFileByLines(String fileName)
{
String phoneStr = null;
BufferedReader br = null;
try
{
File file = new File(fileName);
StringBuffer sb = new StringBuffer();
br = new BufferedReader(new FileReader(file));
String tempString = null;
// 一次读入一行,直到读入null为文件结束
while ((tempString = br.readLine()) != null)
{
//将读取到的数据添加到stringBuffer
sb.append(tempString.trim()).append(",");
}
//截取字符串
if (sb.lastIndexOf(",") != -1)
{
sb.deleteCharAt(sb.lastIndexOf(","));
}
phoneStr = sb.toString();
sb.setLength(0);
} catch (Exception e)
{
//异常信息打印
// EmpExecutionContext.error(e,"以行为单位读取文件异常!");
} finally
{
try
{
if (br != null)
{
//关闭流
br.close();
}
} catch (IOException ioe)
{
//异常信息打印
// EmpExecutionContext.error(ioe,"关闭文本流异常! ");
}
}
//返回读到的数据
return phoneStr;
}
java文件的读写操作的更多相关文章
- java 文件的读写操作
java 文件的读写操作 一.读: public String getSetting() { HttpServletRequest request=org.apache.struts2.Servle ...
- Java 对不同类型的数据文件的读写操作整合器[JSON,XML,CSV]-[经过设计模式改造](2020年寒假小目标03)
日期:2020.01.16 博客期:125 星期四 我想说想要构造这样一个通用文件读写器确实不容易,嗯~以后会添加更多的文件类型,先来熟悉一下文件内容样式: <?xml version=&quo ...
- android报错及解决2--Sdcard进行文件的读写操作报的异常
报错描述: 对Sdcard进行文件的读写操作的时候,报java.io.FileNotFoundException: /sdcard/testsd.txt (Permission denied),在往S ...
- 使用字符流(Writer、Reader)完成对文件的读写操作
字符流 字符输出流:Writer,对文件的操作使用子类FileWriter 字符输入流:Reader,对文件的操作使用子类FileReader 每次操作的是一个字符 文件字符操作流会自带缓存,默认大小 ...
- INI 文件的读写操作
在C#中对INI文件进行读写操作,在此要引入using System.Runtime.InteropServices; 命名空间,具体方法如下: #region 变量 private static r ...
- Android 对 properties文件的读写操作
-. 放在res中的properties文件的读取,例如对放在assets目录中的setting.properties的读取:PS:之所以这里只是有读取操作,而没有写的操作,是因为我发现不能对res下 ...
- C++学习48 对ASCII文件的读写操作
如果文件的每一个字节中均以ASCII代码形式存放数据,即一个字节存放一个字符,这个文件就是ASCII文件(或称字符文件).程序可以从ASCII文件中读入若干个字符,也可以向它输出一些字符. 对ASCI ...
- Delphi- ini文件的读写操作
一.读INI文件示例 procedure TForm1.FormCreate(Sender: TObject); Var MyIni :Tinifile; glAppPath :string; beg ...
- python使用装饰器对文件进行读写操作'及遍历文件目录
'''使用装饰器对文件进行读写操作''' # def check_permission(func): # '''演示嵌套函数定义及使用''' # def wrapper(*args,**kwargs) ...
随机推荐
- Zookepper(2015.08.16笔记)
2015.08.16zookepper Zookeeper 是 Google 的 Chubby一个开源的实现,是 Hadoop 的分布式协调服务(如同小区里面的供水.电的系统) 它包含一个简单的原 ...
- Linux中的sed命令
sed - stream editor for filtering and transforming text 流编辑器的过滤和转换文本 sed [-nerf] [动作] 参数: -i 修改源文件 危 ...
- 网关、DNS、路由器区别
1.首先得区分一下网关和路由器的区别: 网关是一个IP地址.是一个网络连接到另一个网络的"关口". 路由器是一个物理设备.一般局域网的网关就是路由器的IP地址. 2. 网关.DNS ...
- 走入PHP-初次见面
FROM:实验楼 Linux启动WEB服务器: $ sudo service apache2 start 新建并打开test.php文件: $ sudo gvim /path/test.php PHP ...
- Omi架构与React Fiber
原文链接-https://github.com/AlloyTeam/omi/tree/master/tutorial 写在前面 Omi框架在架构设计的时候就决定把update的控制权交给了开发者,视灵 ...
- build.gradle代码
Android Studio 这么强大的工具,就算我们不懂 gradle, groovy, 也照样能借助AS对 Android 项目进行编译.调试.运行.打包等操作.build.gradle 这个文件 ...
- 开源的.NET媒体文件操作组件TagLib#解析
人生得意须尽欢 莫使金樽空对月.写博客都会在吃饭后,每次吃饭都要喝上二两小酒,写博客前都要闲扯,这些都是个人爱好,改不掉了,看不惯的人,还望多多包含一下,有相同爱好的同学,咱们可以一起喝着小酒一边吹牛 ...
- Object-C定时器,封装GCD定时器的必要性!!! (二)
上一篇:Object-C定时器,封装GCD定时器的必要性!!! (一) 上一篇认识了Object-C中的几种定时器,这一篇将Dispatch定时器(GCD定时器)封装起来. p.p1 { margin ...
- D3.js-数值自动变动的条形图表
开始停止 // <p> <style><!-- button{ background-color:#aaaaaa; font-family:微软雅黑; font-si ...
- 【canvas系列】canvas实现“ 简单的Amaziograph效果”--画对称图
标题很难引人入胜,先放个效果图好了 如果图片吸引不了你,那我觉得也就没啥看的了. demo链接: https://win7killer.github.io/can_demo/demo/draw_rol ...