解决方案 »

  1.   

    大哥,说具体点嘛,我查了API,没找到对应的方法,也用了度娘,还是没找到
      

  2.   

    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) { }
    } }}
    给你写的是重写了一个文件,而不是直接覆盖,直接覆盖的情况下,当文件很大会导致内存溢出,你如果希望是覆盖源文件的话,则可以在这段代码执行完之后,将原文件删除,并将新文件改名即可。
      

  3.   

    Quote: 引用 3 楼 rumlee 的回复:

    谢谢了,受教了。想到过用replaceAll,可能是对这个方法没掌握好吧,当时有些没想通
      

  4.   

    用  toUpperCase  , ,public String toUpperCase()
      

  5.   

    Quote: 引用 3 楼 rumlee 的回复:

    大哥,那个bw.write(13)和bw.write(10)是什么作用啊?
      

  6.   

    Quote: 引用 3 楼 rumlee 的回复:

    这样也有bug,因为这样的话如果一个单词叫做"testhello",然后按照本意是不需要替换”hello“部分的,但是用replaceAll就把它替换了,能有别的办法吗
      

  7.   

    Quote: 引用 5 楼 rui888 的回复:

    关键是怎么才能拿到txt文档的每一个字符串然后再把特定的字符串转化为大写呢,我知道这个方法,但是如果用fileInputreader之类的不知道怎么拿到每个单词啊,它取出来是数字流的嘛,不知道怎么赋值给变量,所以这个方法来怎么用啊
      

  8.   


    回车跟换行[/quote恩恩,后来我去试了一下,一个作用是换行,另外一个是支持中文显示。谢谢哈。但是问题还是没解决啊
      

  9.   

    楼上的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) { } }