"
从一个.txt中读取其内容,文本中有类似信息如下:
信息1
信息2
信息3
。。。
我写的代码是:
public class FileMessage {
public static void main(String[] args) throws Exception { File file = new File("D:"+File.separator+"test.txt"); if(!file.exists()){ throw new Exception("抱歉,您请求的文件路径不存在!"); } InputStream is = new FileInputStream(file); byte[] byt = new byte[(int)file.length()]; is.read(byt); is.close(); String result = new String(byt); result.replace("\r", ""); result.replace("\n", ""); System.out.println("从文件中读到的结果:"+result); }
}
读到的数据总是分成了多行,但需求需要显示在一行,想请教一下大家为什么replace()方法没有起作用,去掉字符串里面的换行符呢?或者有没有其他更优雅一些的实现方法呢?
"
java.nio.file.Files
这个工具类有提供流式操作文本文件的 API,对于你的需求:
Files.lines(Paths.get("D:", "test.txt")).collect(Collectors.joining());
######
java8写法:
return new BufferedReader(new FileReader(file)).lines().collect(Collectors.joining());
######
怎么做上面说清了。我来回答一下为什么不变~
String对象是不可变的,所以你这里的result是改变不了的。replace()
方法是生成了一个新的String对象,所以如果你要改的话,可以这么做:
String result = "aaaaa";
result = result.replace("a", "b");
######
第一: 可以用一行一行的读,然后拼接起来。
第二: result.replace("rn","");
public class FileMessage2 {
public static void main(String[] args) throws Exception {
File file = new File("D:"+File.separator+"test.txt");
if(!file.exists()){
throw new Exception("抱歉,您请求的文件路径不存在!");
}
// InputStream is = new FileInputStream(file);
// byte[] byt = new byte[(int)file.length()];
// is.read(byt);
// is.close();
// String result = new String(byt);
// result.replace("rn", "");
FileReader fr = new FileReader(file);
BufferedReader br = new BufferedReader(fr);
StringBuffer sb = new StringBuffer();
String str;
while((str=br.readLine())!=null){
sb.append(str);
}
br.close();
fr.close();
System.out.println("从文件中读到的结果:"+sb);
}
}
采用了一种按行读取的方式解决了,但是我还是不知道一开始的写法里replace()方法为何无效,悲:-(
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。