替换文本文件内容
public static void main(String[] args) throws IOException {
//替换前字符串
String before="a";
//替换后字符串
String after="b";
//创建文件读流
FileReader reader=null;
//创建文件写流
FileWriter writer =null;
//使用StringBuilder对想保存文件内容
StringBuilder sb=new StringBuilder();
//声明文件读入标识
int flag=0;
//使用字符数组读入文件
char[] temp=new char[1024];
File textFile=new File("f:\\1.txt");
try {
//使用选择的文件创建读流
reader=new FileReader(textFile);
while((flag=reader.read(temp))!=-1){
//读入文件中的内容
sb.append(temp);
}
//替换字符串
String content=sb.toString().replace(before, after);
//创建文件写流
writer =new FileWriter(textFile);
//将替换后的字符串写入到文件
writer.write(content);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
writer.flush();
writer.close();
}
}
文件重命名和快速移动文件
File file=new File("F:\\1.txt");
//既可以修改名称,有可以修改绝对路径,实现快速移动文件
file.renameTo(new File("F:\\2.txt"));
对大文件实现分割、合并处理
/**
*
* @param commFile 需要分割的文件
* @param untieFile 分割后保存的文件
* @param filesize 分割多少个
*/
public void fenGe(File commFile,File untieFile,int filesize){
FileInputStream fis=null;
//用来指定分割文件以MB为单位
int size =1024*1024;
try {
//如果保存分割文件地址不是路径
if(untieFile.isDirectory()){
//创建该路径
untieFile.mkdirs();
}
size=size*filesize;
//获取文件大小
int length=(int)commFile.length();
//获取文件大小除以MB的得数
int num=length/size;
//获取文件大小与MB相除的余数
int yu=length % size;
//获取保存文件的完成路径信息
String newfengeFile=commFile.getAbsolutePath();
int fileNew =newfengeFile.lastIndexOf(".");
//截取字符串
String strNew= newfengeFile.substring(fileNew,newfengeFile.length());
//创建FileInputStream类对象
fis=new FileInputStream(commFile);
//创建文件数组
File[] fl=new File[num+1];
int begin=0;
//循环遍历数组
for(int i=0;i<num;i++){
//指定分割后小文件的文件名
fl[i]=new File(untieFile.getAbsolutePath()+"\\"+(i+1)+strNew+".tem");
if(!fl[i].isFile()){
//创建该文件
fl[i].createNewFile();
}
FileOutputStream fos=new FileOutputStream(fl[i]);
byte[] bl=new byte[size];
//读取分割后的小文件
fis.read(bl);
//写文件
fos.write(bl);
begin=begin+size*1024*1024;
//关闭流
fos.close();
}
//文件大小与指定文件分割大小相除的余数不为0;
if(yu !=0){
//指定文件分割后数组中最后一个文件名
fl[num]=new File(untieFile.getAbsolutePath()+"\\"+(num+1)+strNew+".tem");
if(!fl[num].isFile()){
//新建文件
fl[num].createNewFile();
}
FileOutputStream fyu=new FileOutputStream(fl[num]);
byte[] byt=new byte[yu];
fis.read(byt);
fyu.write(byt);
fyu.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* 合并文件
* @param file 需要合并的文件
* @param cunDir 合并后的文件
* @param hz
*/
public void heBing(File[] file,File cunDir, String hz){
try {
//指定分割后文件的文件名
File heBingFile=new File(cunDir.getAbsoluteFile()+"\\UNTIE"+hz);
if(!heBingFile.isFile()){
heBingFile.createNewFile();
}
//创建FileOutputStream对象
FileOutputStream fos=new FileOutputStream(heBingFile);
//循环遍历要进行合并的文件数组对象
for(int i=0;i<file.length;i++){
FileInputStream fis=new FileInputStream(file[i]);
//获取文件长度
int len=(int)file[i].length();
byte[]bRead=new byte[len];
//读取文件
fis.read(bRead);
//写入文件
fos.write(bRead);
//将流关闭
fis.close();
}
fos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
对文件进行读取
仅需要用File对象构造一个Scanner对象
Scanner in= new Scanner(Paths.get("myfile.tet"),"UTF-8");
如果文件名中含反斜杠符号,需要在每个反斜杠之前加一个额外的反斜杠
如:“c:\mydirectory\myfile.txt”
文件转字符串
public static String file2String(File file){
try {
BufferedReader buffer = new BufferedReader(new FileReader(file));
StringBuilder sb = new StringBuilder();
String temp;
while((temp = buffer.readLine()) !=null ){
sb.append(temp);
}
return sb.toString();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/117542.html