java如何将读取的文件的指定字符串大写
比如我想读取一个名为test.txt的文件,然后我指定将文件中出现的所有“hello”这个单词都大写,然后写入test.txt这个文件,也可以写入一个新文件。这该怎么写啊?我自己尝试了用filereader,但是不知道怎么把in.read()读的数据流转化为字符,我也想过用bufferedreader(),但是我也不知道具体该怎么做。请大手们指教一下
------解决思路----------------------
IO操作。。。多看API。。。。
------解决思路----------------------
import java.io.*;
public class Test {
public static void main(String[] args) {
BufferedReader br = null;
BufferedWriter bw = null;
try {
br = new BufferedReader(new InputStreamReader(new FileInputStream(
"d:\\test.txt")));
bw = new BufferedWriter(new OutputStreamWriter(
new FileOutputStream("d:\\test1.txt")));
String line = null;
while ((line = br.readLine()) != null) {
line = line.replaceAll("hello", "HELLO");
bw.write(line);
bw.write(13);
bw.write(10);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
br.close();
} catch (Exception e) {
}
try {
bw.close();
} catch (Exception e) {
}
}
}
}
给你写的是重写了一个文件,而不是直接覆盖,直接覆盖的情况下,当文件很大会导致内存溢出,你如果希望是覆盖源文件的话,则可以在这段代码执行完之后,将原文件删除,并将新文件改名即可。
------解决思路----------------------
用 toUpperCase , ,public String toUpperCase()
------解决思路----------------------
引用:Quote: 引用:大哥,那个bw.write(13)和bw.write(10)是什么作用啊?
回车跟换行
------解决思路----------------------
楼上的bufferReader是个好主意,读一部分处理一部分,不用全部先加载进内存
楼主想完全匹配一个单词,正则表达式里写\b,\b是正则表达式里表示单词分割的特殊字符,"\bhello\b"会严格匹配hello这个单词而不会把helloword这种找出来:
public void upperWordsOfFile(String filePath,String word){
BufferedReader br = null;
BufferedWriter bw = null;
String outFilePath = filePath.substring(0,filePath.lastIndexOf(File.separator))+File.separator+"out";
String parttern = "\b"+word+"\b";
String upperWord = word.toUpperCase();
try {
br = new BufferedReader(new InputStreamReader(new FileInputStream(filePath)));
bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFilePath)));
String line = null;
while ((line = br.readLine()) != null) {
line = line.replaceAll(parttern, upperWord);
bw.write(line);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
br.close();
bw.close();
} catch (Exception e) {
}
}
------解决思路----------------------
基本上就是11楼的说法了。
如果你不嫌麻烦的话,也可以将整个字符串拆分成一个个的单词,然后替换你想替换的