如何修改一行文本
比如D盘有一个ddd.txt文件文件内容为:
白马是马
马是白马
假如我想把第二行的内容修改为“马不一定是白马” 要怎么做?
在线等答案 求大神回复 --------------------编程问答-------------------- 怎么没人啊 --------------------编程问答-------------------- 基本上没什么让你认为会更完美的方案:
用FileReader打开文件,全部读取进来,关闭。
然后把第二行替换成你想要的字符串。
最后用FileWriter打开文件,全部写入。 --------------------编程问答-------------------- 二楼说的不错,文件不大的话,这样效率应该没问题的
文件大的话,我也不知道有什么好方法,请大牛吧。 --------------------编程问答-------------------- 能不能把代码写出来参考一下 --------------------编程问答--------------------
见谅。看有没有其它热心人帮你吧。 --------------------编程问答--------------------
--------------------编程问答-------------------- 用FileInputStream read()方法读取文件里的内容,然后在用FileOutputStream中的public void write(byte[] b) throws IOException方法将要改的内容写到第二行,思路就是这样 --------------------编程问答--------------------
我要修改的是一正行中文啊 --------------------编程问答--------------------
import java.io.*;
import java.util.*;
public class ad13
{
public static void main(String[] args)
{
FileReader fi;
List<String> list = new ArrayList<String>();
try
{
fi = new FileReader("D:/ddd.txt");
BufferedReader bis = new BufferedReader(fi);
String str = "";
while((str = bis.readLine()) != null)
{
list.add(str);
}
fi.close();
bis.close();
list.set(1, "马不一定是白马");
} catch(IOException e){
e.printStackTrace();
}
FileOutputStream fos;
try
{
fos = new FileOutputStream("D:/ddd.txt");
DataOutputStream dos = new DataOutputStream(fos);
for(int i=0; i<list.size(); i++)
{
dos.writeUTF(list.get(i));
dos.flush();
}
dos.close();
}catch(IOException e){
e.printStackTrace();
}
}
}
勉强写了个。。楼主对照改改吧, --------------------编程问答--------------------
--------------------编程问答--------------------
public void write(String content,int position){}
try {
RandomAccessFile randomFile = new RandomAccessFile(fileName, "rw");
randomFile.seek(position);//知道白马在哪个位置,传进来就可以了
randomFile.writeBytes(content);//content是要更改的内容
randomFile.close();
} catch (IOException e) {
e.printStackTrace();
}
楼主,这个百度随便找段文件操作的代码看一下吧,看不懂照着改都行啊。很简单的!
还有建议还是判断一下那段代码是不是“马是白马”! --------------------编程问答--------------------
--------------------编程问答--------------------
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class Test {
public static void main(String[] args) throws IOException {
List<String> list = new ArrayList<String>();
BufferedReader br = new BufferedReader(new FileReader("ddd.txt"));
String line = null;
while((line=br.readLine())!=null){
if("马是白马".equals(line))
line="马不一定是白马";
list.add(line);
}
br.close();
BufferedWriter bw = new BufferedWriter(new FileWriter("ddd.txt"));
for(String str : list){
bw.write(str);
bw.newLine();
bw.flush();
}
bw.close();
}
}
不行啊 运行成功 但是结果不对 --------------------编程问答--------------------
这个也不行的 --------------------编程问答--------------------
--------------------编程问答--------------------
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;
import java.nio.charset.Charset;
import java.util.List;
public class DDD {
public static void main(final java.lang.String[] args) {
try {
Path path = Paths.get("D:/Temp/Examples", "ddd.txt");
Charset charset = Charset.forName("UTF-8");
List<String> lines = Files.readAllLines(path, charset);
lines.set(1, "马不一定是白马");
Files.write(path, lines, charset, StandardOpenOption.WRITE);
} catch (Exception e) {
e.printStackTrace();
}
}
}
ddd.txt 保存成UTF-8了。根据实际情况修改编码方式。 --------------------编程问答-------------------- 学习中,请大家照顾 --------------------编程问答-------------------- 感慨一下,要是用Perl来写这得多方便啊~~
补充:Java , Java SE