java文件读取与写入
package com.myjava; import java.io.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List; /**
* Created by 14061371 on 2017/5/12.
*/
public class FileUtils {
//获取当前路径 /** 按字节读取
*
* @param fileName
*/
public static void readFileByBytes(String fileName){
File file=new File(fileName);
if(!file.exists()){
return;
}
InputStream in = null;
try {
in = new FileInputStream(file);
byte[] tempbytes = new byte[100];
int byteread = 0;
in = new FileInputStream(fileName);
// 读入多个字节到字节数组中,byteread为一次读入的字节数
while ((byteread = in.read(tempbytes)) != -1) {
System.out.write(tempbytes, 0, byteread);
}
} catch (IOException e) {
e.printStackTrace();
}finally {
if (in != null) {
try {
in.close();
} catch (IOException e1) {
}
}
}
} /**
* 按字符读取
* @param fileName
*/
public static void readFileByChars(String fileName){
File file=new File(fileName);
if(!file.exists()){
return;
}
Reader reader=null;
try {
reader=new InputStreamReader(new FileInputStream(file));
int tempChart;
char[] tempchars = new char[30];
while((tempChart=reader.read(tempchars))!=-1){
System.out.print(tempchars);
}
} catch (IOException e) {
e.printStackTrace();
}finally{
if(reader!=null){
try{
reader.close();
}catch (IOException e){ }
}
}
} /**
* 按行读取
* @param fileName
*/
public static void readFileByLines(String fileName){
File file=new File(fileName);
if(!file.exists()){
return;
}
BufferedReader reader=null;
try {
reader=new BufferedReader(new FileReader(file));
String tempString=null;
int line=1;
while((tempString=reader.readLine())!=null){
System.out.println(line+tempString);
line++;
}
reader.close();
} catch (IOException e) {
e.printStackTrace();
}finally{
if(reader!=null){
try{
reader.close();
}catch(IOException e){ }
}
}
} /**
* random读取文件
* @param fileName
*/
public static void readFileByRandomAccess(String fileName){
RandomAccessFile randomFile=null;
try {
randomFile=new RandomAccessFile(fileName,"r");
long fileLength=randomFile.length();
randomFile.seek(0);
byte[] bytes=new byte[10];
int byteread=0;
while((byteread=randomFile.read(bytes))!=-1){
System.out.write(bytes,0,byteread);
}
} catch (IOException e) {
e.printStackTrace();
}finally {
if (randomFile != null) {
try {
randomFile.close();
} catch (IOException e) { }
}
}
} /**
* 读取文件最后N行
*
* 根据换行符判断当前的行数,
* 使用统计来判断当前读取第N行
*
* PS:输出的List是倒叙,需要对List反转输出
*
* @param file 待文件
* @param numRead 读取的行数
* @return List<String>
*/
public static List<String> readLastNLine(File file, long numRead) {
// 定义结果集
List<String> result = new ArrayList<String>();
//行数统计
long count = 0; // 排除不可读状态
if (!file.exists() || file.isDirectory() || !file.canRead()) {
return null;
} // 使用随机读取
RandomAccessFile fileRead = null;
try {
//使用读模式
fileRead = new RandomAccessFile(file, "r");
//读取文件长度
long length = fileRead.length();
//如果是0,代表是空文件,直接返回空结果
if (length == 0L) {
return result;
} else {
//初始化游标
long pos = length - 1;
while (pos > 0) {
pos--;
//开始读取
fileRead.seek(pos);
//如果读取到\n代表是读取到一行
if (fileRead.readByte() == '\n') {
//使用readLine获取当前行
String line = fileRead.readLine();
//保存结果
result.add(line);
//打印当前行
// System.out.println(line);
//行数统计,如果到达了numRead指定的行数,就跳出循环
count++;
if (count == numRead) {
break;
}
}
}
if (pos == 0) {
fileRead.seek(0);
result.add(fileRead.readLine());
}
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (fileRead != null) {
try {
//关闭资源
fileRead.close();
} catch (Exception e) {
}
}
}
Collections.reverse(result);
return result;
} /**
* 使用RandomAccessFile追加文件
* @param fileName
*/
public static void appendFileByAccess(String fileName,String content){
try {
RandomAccessFile randomFile=new RandomAccessFile(fileName,"rw");
long fileLength=randomFile.length();
randomFile.seek(fileLength);
randomFile.writeBytes(content);
randomFile.close();
} catch (IOException e) {
e.printStackTrace();
}
} /**
* 使用FileWriter 追加文件内容
* @param fileName
* @param content
*/
public static void appendFile(String fileName,String content){
try {
FileWriter writer=new FileWriter(fileName,true);
writer.write(content);
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
} /**
* 往文件头插入数据
* @param filename
* @param pos
* @param insertContent
*/
public static void insert(String filename, int pos, String insertContent){
RandomAccessFile raf=null;
FileOutputStream tmpOut=null;
FileInputStream tmpIn=null;
try{
File tmp = File.createTempFile("tmp", null);
tmp.deleteOnExit();
raf = new RandomAccessFile(filename, "rw");
tmpOut = new FileOutputStream(tmp);
tmpIn = new FileInputStream(tmp);
raf.seek(pos);//首先的话是0
byte[] buf = new byte[64];
int hasRead = 0;
while ((hasRead = raf.read(buf)) > 0) {
//把原有内容读入临时文件
tmpOut.write(buf, 0, hasRead); }
raf.seek(pos);
raf.write(insertContent.getBytes());
//追加临时文件的内容
while ((hasRead = tmpIn.read(buf)) > 0) {
raf.write(buf, 0, hasRead);
}
}catch (IOException e) {
e.printStackTrace();
}finally{
try {
if (raf != null) {
raf.close();
}
if (tmpOut != null) {
tmpOut.close();
}
if (tmpIn != null) {
tmpIn.close();
}
} catch (IOException e) { }
}
}
}
java文件读取与写入的更多相关文章
- Java底层代码实现单文件读取和写入(解决中文乱码问题)
需求: 将"E:/data/车站一次/阿坝藏族羌族自治州.csv"文件中的内容读取,写入到"E:/data//车站一次.csv". 代码: public cla ...
- Apache commons-io实现单文件读取和写入
Apache commons-io提供了很多类,这里只介绍FileUtils类. FileUtils类提供了一些操作文件对象的实用方法,包括文件的读取.写入.复制和比较等. 比如逐句读取和写入一个文件 ...
- python文件读取和写入案例
python文件读取和写入案例 直接上代码吧 都是说明 百度上找了很多,最终得出思路 没有直接可以读取修改的扩展,只能先读取,然后复制一份,然后在复制出来的文件里面追加保存 然后删除读的那个,但是缺 ...
- HDFS数据流-剖析文件读取及写入
HDFS数据流-剖析文件读取及写入 文件读取 1. 客户端通过调用FileSystem对象的open方法来打开希望读取的文件,对于HDFS来说,这个对象是分布式文件系统的一个实例.2. Distrib ...
- JAVA文件读取FileReader
JAVA文件读取FileReader 导包import java.io.FileReader 创建构造方法public FileReader(String filename),参数是文件的路径及文件名 ...
- java===java基础学习(5)---文件读取,写入操作
文件的写入读取有很多方法,今天学到的是Scanner和PrintWriter 文件读取 Scanner in = new Scanner(Paths.get("file.txt") ...
- Java中IO流文件读取、写入和复制
//构造文件File类 File f=new File(fileName); //判断是否为目录 f.isDirectory(); //获取目录下的文件名 String[] fileName=f.li ...
- properties文件读取与写入
将peoperties文件的读取和写入封装成了一个工具类: import java.io.BufferedInputStream; import java.io.FileInputStream; im ...
- Delphi txt文件读取及写入
简介:Delphi支持三种文件类型:文本文件.记录文件.无类型文件.文本文件的读... 在进行win32开发中对文件的读写是最常用的操作之一 Delphi 支持三种文件类型: 文本文件.记录文件 ...
随机推荐
- CSS中包含块原理解析
CSS包含块原理解析 确定CSS中的包含块也确定就是元素的父元素.关键是:看元素是如何定位的.确定包含块很重要,比如设置百分比.另外也可以进行样式的继承等等. 分两个情况: 相对定位和静态定位 静态定 ...
- sqlldr load UTF8 error
The default length semantics for all datafiles (except UFT-16) is byte. So in your case you have a C ...
- [Luogu1979][NOIP2013]华容道(BFS+SPFA)
考虑从起点到终点的过程,一定是先将空格子移到指定格子旁边,和指定格子交换,再移到下一个指定格子要到的地方,再交换,如此反复. 于是问题分为两个部分: 1.给定两个曼哈顿距离为2的格子求最短路,BFS即 ...
- STL的常用用法、函数汇总(不定时更新)
隶书文字为原创. 1.vector 在c++中,vector是一个十分有用的容器,下面对这个容器做一下总结. 1 基本操作 (1)头文件#include<vector>. (2)创建vec ...
- 20162303实验三 敏捷开发与XP实践-1
北京电子科技学院(BESTI) 实 验 报 告 课程:程序设计与数据结构 班级: 1623 姓名: 石亚鑫 学号:20162303 成绩: 2分 指导教师:娄嘉鹏 王志强 实验日期:5月12日 实验密 ...
- github之怎么上传本地项目
github之怎么上传本地项目 以前都是在自己磁盘上的某个目录下,然后打开git bash,来进行把本地的一些文件推到远程github上. 之前的方法步骤: 1.在github上new一个库,然后gi ...
- Codeforces Round #127 (Div. 1) E. Thoroughly Bureaucratic Organization 二分 数学
E. Thoroughly Bureaucratic Organization 题目连接: http://www.codeforces.com/contest/201/problem/E Descri ...
- 封装log4cp p
log4cpp 是参考 log4j 所写的 c++ 版本的写 log 的库.可以在这里下载 http://log4cpp.sourceforge.net/ 我的使用方法是: 1,定义了一个 _ ...
- [Linux] ubuntu 安装 Wireshark
Wireshark是一款非常流行的协议分析软件.自然可以网络抓包的需求. sudo apt-get install wireshark 出于安全方面的考虑,普通用户不能够打开网卡设备进行抓包,wire ...
- dl,dt,dd标记在网页中要充分利用
dl,dt,dd标记在网页中要充分利用 来源:网络整理 时间:08-05-27 点击: 点击这里收藏本文 我们在制作网页过程中用到列表时一般会使用<ul>或者<ol>标签,很少 ...