修改文件内容Java python
2017-08-24 10:54
676 查看
Java:
hello world
hello c++
hello python
hello c
hello java
结果:
hello world
hello c++
hello pythonllo c
hello java
分析:RandomAccessFile是随机读取文件类,不涉及stream操作,涉及指针移动操作,修改文件内容可能丢失数据,见代码(覆盖掉了其所占位置的原来的字符)
利用流替换:
全部加载到内存中进行替换(用正则):
读一行,替换一行,写一行
上面的方法是不可以使用的,Java不支持对一个文件同时读写流操作。
应该先写入另外一个文件,再重命名。
File f =new File("C:\\Users\\Casey\\Desktop\\1.txt");
File f2 =new File("C:\\Users\\Casey\\Desktop\\2.txt");
BufferedReader br = new BufferedReader(new FileReader(f));
BufferedWriter bw = new BufferedWriter(new FileWriter(f2));
String line = null;
while((line=br.readLine())!=null) {
String newLine = line.replace("py", "python");
System.out.println(newLine);
bw.write(newLine);
bw.write(System.getProperty("line.separator"));//换行符
}
bw.flush();
br.close();
bw.close();
if(f.exists()) {
f.delete();
}
f2.renameTo(f);
RandomAccessFile raf = new RandomAccessFile("C:\\1.txt", "rw"); String s = raf.readLine(); long pointer =0; while(s!=null) { System.out.println(s); if(s.contains("py")) { raf.seek(pointer); raf.writeBytes("hello python"); } pointer = raf.getFilePointer(); s = raf.readLine(); }文件内容:
hello world
hello c++
hello python
hello c
hello java
结果:
hello world
hello c++
hello pythonllo c
hello java
分析:RandomAccessFile是随机读取文件类,不涉及stream操作,涉及指针移动操作,修改文件内容可能丢失数据,见代码(覆盖掉了其所占位置的原来的字符)
利用流替换:
全部加载到内存中进行替换(用正则):
File f =new File("C:\\1.txt"); BufferedReader br = new BufferedReader(new FileReader(f)); StringBuffer src = new StringBuffer(); StringBuffer dst = new StringBuffer(); String line = null; while((line=br.readLine())!=null) { src.append(line); src.append(System.getProperty("line.separator"));//换行符 } Pattern p =Pattern.compile("py"); Matcher m = p.matcher(src); while(m.find()) { m.appendReplacement(dst, "python"); } m.appendTail(dst); BufferedWriter bw = new BufferedWriter(new FileWriter(f)); bw.write(dst.toString()); bw.flush(); br.close(); bw.close();
读一行,替换一行,写一行
File f =new File("C:\\Users\\Casey\\Desktop\\1.txt"); BufferedReader br = new BufferedReader(new FileReader(f)); BufferedWriter bw = new BufferedWriter(new FileWriter(f)); String line = null; while((line=br.readLine())!=null) { String newLine = line.replace("py", "python"); System.out.println(newLine); bw.write(newLine); bw.write(System.getProperty("line.separator"));//换行符 } bw.flush(); br.close(); bw.close();
上面的方法是不可以使用的,Java不支持对一个文件同时读写流操作。
应该先写入另外一个文件,再重命名。
File f =new File("C:\\Users\\Casey\\Desktop\\1.txt");
File f2 =new File("C:\\Users\\Casey\\Desktop\\2.txt");
BufferedReader br = new BufferedReader(new FileReader(f));
BufferedWriter bw = new BufferedWriter(new FileWriter(f2));
String line = null;
while((line=br.readLine())!=null) {
String newLine = line.replace("py", "python");
System.out.println(newLine);
bw.write(newLine);
bw.write(System.getProperty("line.separator"));//换行符
}
bw.flush();
br.close();
bw.close();
if(f.exists()) {
f.delete();
}
f2.renameTo(f);
相关文章推荐
- java poi 打开 excel 文件 保留格式 修改内容 另存为新文件
- JAVA批量修改文本文件内容,支持子目录
- 使用python 修改文件内容
- 【转】使用python 修改文件内容
- Python批量修改文本文件内容的方法
- java对txt文本文件的复制粘贴(对文件内容进行了简单的修改)以行为一个处理单位
- 内容文件Java创建TXT文件并进行读、写、修改操作
- Python案例-开发之路-文件内容查找并修改
- python修改文件内容
- python修改txt文件内容
- Java 怎样修改文本文件内容
- java 修改 jar 包文件内容的一个实例
- Python修改文件内容
- Python批量修改文本文件内容的方法
- python修改文件内容,不需要read,write多个动作。
- python 修改文件内容且重启服务(windows)
- java 修改文件的局部内容
- Java&Xml教程(七)使用JDOM修改XML文件内容
- 直接修改class文件内容即使是文本会导致App异常,正确方式是修改java再用生成的class替换掉原有的class
- python 遍历所有文件,修改文件内的内容