当前位置: 代码迷 >> J2SE >> java怎么将读取的文件的指定字符串大写
  详细解决方案

java怎么将读取的文件的指定字符串大写

热度:83   发布时间:2016-04-23 20:04:26.0
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楼的说法了。
如果你不嫌麻烦的话,也可以将整个字符串拆分成一个个的单词,然后替换你想替换的
  相关解决方案