开发者社区> 问答> 正文

Java 读文件内容如何显示在一行上 报错

"

从一个.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()方法没有起作用,去掉字符串里面的换行符呢?或者有没有其他更优雅一些的实现方法呢?

"

展开
收起
因为相信,所以看见。 2020-05-27 10:00:39 982 0
1 条回答
写回答
取消 提交回答
  • 阿里,我所有的向往

    "

    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()方法为何无效,悲:-(

    "
    2020-05-27 17:53:42
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载