java如何将读取的文件的指定字符串大写

resolvewang 2014-12-24 10:51:36
比如我想读取一个名为test.txt的文件,然后我指定将文件中出现的所有“hello”这个单词都大写,然后写入test.txt这个文件,也可以写入一个新文件。这该怎么写啊?我自己尝试了用filereader,但是不知道怎么把in.read()读的数据流转化为字符,我也想过用bufferedreader(),但是我也不知道具体该怎么做。请大手们指教一下
...全文
329 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
qingyuan18 2014-12-26
  • 打赏
  • 举报
回复
楼上的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) { } }
resolvewang 2014-12-26
  • 打赏
  • 举报
回复
引用 7 楼 crabisacoolboy 的回复:
[quote=引用 6 楼 u014193283 的回复:] [quote=引用 3 楼 rumlee 的回复:] 大哥,那个bw.write(13)和bw.write(10)是什么作用啊?
回车跟换行[/quote恩恩,后来我去试了一下,一个作用是换行,另外一个是支持中文显示。谢谢哈。但是问题还是没解决啊
resolvewang 2014-12-26
  • 打赏
  • 举报
回复
[quote=引用 5 楼 rui888 的回复:] 关键是怎么才能拿到txt文档的每一个字符串然后再把特定的字符串转化为大写呢,我知道这个方法,但是如果用fileInputreader之类的不知道怎么拿到每个单词啊,它取出来是数字流的嘛,不知道怎么赋值给变量,所以这个方法来怎么用啊
resolvewang 2014-12-26
  • 打赏
  • 举报
回复
[quote=引用 3 楼 rumlee 的回复:] 这样也有bug,因为这样的话如果一个单词叫做"testhello",然后按照本意是不需要替换”hello“部分的,但是用replaceAll就把它替换了,能有别的办法吗
resolvewang 2014-12-26
  • 打赏
  • 举报
回复
引用 11 楼 qingyuan18 的回复:
受教了,谢谢大家热情的回答
勿视人非 2014-12-26
  • 打赏
  • 举报
回复
基本上就是11楼的说法了。 如果你不嫌麻烦的话,也可以将整个字符串拆分成一个个的单词,然后替换你想替换的
螃蟹变异了 2014-12-25
  • 打赏
  • 举报
回复
引用 6 楼 u014193283 的回复:
[quote=引用 3 楼 rumlee 的回复:] 大哥,那个bw.write(13)和bw.write(10)是什么作用啊?
回车跟换行
resolvewang 2014-12-25
  • 打赏
  • 举报
回复
[quote=引用 3 楼 rumlee 的回复:] 大哥,那个bw.write(13)和bw.write(10)是什么作用啊?
tony4geek 2014-12-25
  • 打赏
  • 举报
回复
用 toUpperCase , ,public String toUpperCase()
resolvewang 2014-12-25
  • 打赏
  • 举报
回复
[quote=引用 3 楼 rumlee 的回复:] 谢谢了,受教了。想到过用replaceAll,可能是对这个方法没掌握好吧,当时有些没想通
rumlee 2014-12-25
  • 打赏
  • 举报
回复


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) {

			}
		}

	}

}
给你写的是重写了一个文件,而不是直接覆盖,直接覆盖的情况下,当文件很大会导致内存溢出,你如果希望是覆盖源文件的话,则可以在这段代码执行完之后,将原文件删除,并将新文件改名即可。
resolvewang 2014-12-25
  • 打赏
  • 举报
回复
引用 1 楼 benma378 的回复:
IO操作。。。多看API。。。。
大哥,说具体点嘛,我查了API,没找到对应的方法,也用了度娘,还是没找到
俺是小王子 2014-12-24
  • 打赏
  • 举报
回复
IO操作。。。多看API。。。。

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧