import java.io.*; public class test { public static void main(String[] args)throws Exception{ FileInputStream fin=new FileInputStream("qa.txt"); FileOutputStream fout=new FileOutputStream("2q.txt"); int replace="test".getBytes()[0]; int i=0; while((i=fin.read())!=-1){ if(i==replace)i++; fout.write(i);
public class test
{
public static void main(String[] args)throws Exception{
FileInputStream fin=new FileInputStream("qa.txt");
FileOutputStream fout=new FileOutputStream("2q.txt");
int replace="test".getBytes()[0];
int i=0;
while((i=fin.read())!=-1){
if(i==replace)i++; fout.write(i);
}
fout.flush();
fout.close();
fin.close(); }
};
让FOUT也打开qa.txt
让FOUT也打开qa.txt
---------把FileOutputStream fout=new FileOutputStream("2q.txt");改成:FileOutputStream fout=new FileOutputStream("qa.txt");吗?这样不行,qa内容成空的了。
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;/*
* 创建日期 2006-4-12
*
* TODO 要更改此生成的文件的模板,请转至
* 窗口 - 首选项 - Java - 代码样式 - 代码模板
*/
/**
* @author Administrator
*
* TODO 要更改此生成的类型注释的模板,请转至
* 窗口 - 首选项 - Java - 代码样式 - 代码模板
*/
public class aaa {
public static final String fileName = "c:/aaa.txt"; public static void main(String[] args) {
try {
FileInputStream fin = new FileInputStream(fileName);
byte[] blist = getBytesByInputStream(fin);
blist[2] = (byte) ((int) blist[2] + 1);
saveBytesToFile(blist, fileName);
} catch (Exception e) {
}
} public static byte[] getBytesByInputStream(InputStream fin) throws Exception {
ByteArrayOutputStream bStream = new ByteArrayOutputStream();
byte[] buf = new byte[1024];
int nc = 0;
while ((nc = fin.read(buf, 0, buf.length)) > 0) {
bStream.write(buf, 0, nc);
}
return bStream.toByteArray();
} public static int saveBytesToFile(byte[] savestr, String filename) {
try {
FileOutputStream fos = new FileOutputStream(filename);
fos.write(savestr);
fos.flush();
fos.close();
} catch (Exception e) {
e.printStackTrace();
return -1;
}
return 0;
}
}
似乎有局限性
////////////////////////
可以这样
如果文件很大可以
新建临时文件。
然后再覆盖原文件。
删除临时文件。
上面的办法是把文件全部读出到内存,然后修改一个字节,再保存回去,如果文件小还无所谓,要是文件很大(比如几十M的话)的话,读出和保存的开销太大。下面这个办法是用随机读写,直接打开文件,然后写入一个字节,关闭文件,避免整体读出和整体保存。数据库文件和系统日志文件几乎都是这种随机读写的方式。package cxz.context;import java.io.RandomAccessFile;public class aaa {
public static final String fileName = "c:/aaa.txt"; public static void main(String[] args) {
try {
RandomAccessFile rF = new RandomAccessFile(fileName, "rw");
rF.seek(2);
byte b = rF.readByte();
rF.seek(2);
rF.write(b + 1);
rF.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}