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文件的读写操作的更多相关文章

  1. java 文件的读写操作

    java  文件的读写操作 一.读: public String getSetting() { HttpServletRequest request=org.apache.struts2.Servle ...

  2. Java 对不同类型的数据文件的读写操作整合器[JSON,XML,CSV]-[经过设计模式改造](2020年寒假小目标03)

    日期:2020.01.16 博客期:125 星期四 我想说想要构造这样一个通用文件读写器确实不容易,嗯~以后会添加更多的文件类型,先来熟悉一下文件内容样式: <?xml version=&quo ...

  3. android报错及解决2--Sdcard进行文件的读写操作报的异常

    报错描述: 对Sdcard进行文件的读写操作的时候,报java.io.FileNotFoundException: /sdcard/testsd.txt (Permission denied),在往S ...

  4. 使用字符流(Writer、Reader)完成对文件的读写操作

    字符流 字符输出流:Writer,对文件的操作使用子类FileWriter 字符输入流:Reader,对文件的操作使用子类FileReader 每次操作的是一个字符 文件字符操作流会自带缓存,默认大小 ...

  5. INI 文件的读写操作

    在C#中对INI文件进行读写操作,在此要引入using System.Runtime.InteropServices; 命名空间,具体方法如下: #region 变量 private static r ...

  6. Android 对 properties文件的读写操作

    -. 放在res中的properties文件的读取,例如对放在assets目录中的setting.properties的读取:PS:之所以这里只是有读取操作,而没有写的操作,是因为我发现不能对res下 ...

  7. C++学习48 对ASCII文件的读写操作

    如果文件的每一个字节中均以ASCII代码形式存放数据,即一个字节存放一个字符,这个文件就是ASCII文件(或称字符文件).程序可以从ASCII文件中读入若干个字符,也可以向它输出一些字符. 对ASCI ...

  8. Delphi- ini文件的读写操作

    一.读INI文件示例 procedure TForm1.FormCreate(Sender: TObject); Var MyIni :Tinifile; glAppPath :string; beg ...

  9. python使用装饰器对文件进行读写操作'及遍历文件目录

    '''使用装饰器对文件进行读写操作''' # def check_permission(func): # '''演示嵌套函数定义及使用''' # def wrapper(*args,**kwargs) ...

随机推荐

  1. 【转】Objective-C Runtime

    之前在找Runtime资料,这篇条理是相对比较清晰,对我最有启发的一篇,转载以作记录. 对于iOS小白,值得多看几遍,会有不少收获. --------------------------------- ...

  2. windows phone 8.1开发:文件选择器FileSavePicker

    上一篇文章小梦分享了文件选择器FileOpenPicker的用法,这篇文章我们继续分享FileSavePicker的用法,FileSavePicker的用法几乎和FileOpenPicker用法一模一 ...

  3. iOS开发之核心动画(Core Animation)

    1.概述 Core Animation是一组非常强大的动画处理API,使用它能做出非常炫丽的动画效果,而且往往是事半功倍,使用它需要先添加QuartzCore.framework和引入对应的框架< ...

  4. Android 中基于 Binder的进程间通信

    摘要:对  Binder 工作机制进行了分析. 首先简述 Android 中 Binder 机制与传统的 Linux 进程间的通信比较,接着对基于 Binder 进程间通信的过程分析 最后结合开发实例 ...

  5. CentOs6系统安装及前期为安装Cdh4准备

    问题1: 虚拟机工具:VMware Workstation 前提:虚拟机安装使用64位操作系统时涉及到一个CPU虚拟化的问题,如果BIOS没有开启CPU的虚拟化选项,创建和打开64位虚拟机就会报错. ...

  6. Python之路-Linux命令基础(2)

    作业一: 1)    新建用户natasha,uid为1000,gid为555,备注信息为"master" 2)    修改natasha用户的家目录为/Natasha 3)    ...

  7. Shell 学习笔记之变量

    变量 知识点 变量赋值和输出 variable="hello world" echo $variable 或者 echo ${variable} (最后格式统一使用后者) 只读变量 ...

  8. Uva 10006 Carmichael Numbers (快速幂)

    题意:给你一个数,让你判断是否是非素数,同时a^n%n==a (其中 a 的范围为 2~n-1) 思路:先判断是不是非素数,然后利用快速幂对每个a进行判断 代码: #include <iostr ...

  9. DataReader和DataSet区别

    可以使用DataReader类的对象或DataSet类的对象从数据库读取数据,但它们是有区别的,归纳起来大致有以下几条: 1.       DataReader是数据管理提供者类,而DataSet是一 ...

  10. 微信和支付宝支付模式详解及实现(.Net标准库)- OSS开源系列

    支付基本上是很多产品都必须的一个模块,大家最熟悉的应该就是微信和支付宝支付了,不过更多的可能还是停留在直接sdk的调用上,甚至和业务系统高度耦合,网上也存在各种解决方案,但大多形式各异,东拼西凑而成. ...