首页 > Java > 我想从在Java中读取和写入文件ASCII 数据,可能的方法及其区别是什么?

我想从在Java中读取和写入文件ASCII 数据,可能的方法及其区别是什么?

上一篇 下一篇

似乎有不同的方法可以在Java中读取和写入文件数据。我想从文件中读取 ASCII 数据。可能的方法及其区别是什么?

分割线

网友回答:

ASCII是一个文本文件,所以你会用来阅读。Java 还支持使用 .如果正在读取的文件很大,那么您可能希望在 之上使用 来提高读取性能。ReadersInputStreamsBufferedReaderFileReader

阅读本文,了解如何使用Reader

我还建议您下载并阅读这本精彩(但免费)的书,名为《在Java中思考》。

在 Java 7 中

new String(Files.readAllBytes(...))

(文档)

Files.readAllLines(...)

(文档)

在 Java 8 中

Files.lines(..).forEach(...)

(文档)

分割线

网友回答:

我最喜欢的读取小文件的方式是使用BufferedReader和StringBuilder。它非常简单且切中要害(虽然不是特别有效,但在大多数情况下已经足够好了):

BufferedReader br = new BufferedReader(new FileReader("file.txt"));
try {
    StringBuilder sb = new StringBuilder();
    String line = br.readLine();

    while (line != null) {
        sb.append(line);
        sb.append(System.lineSeparator());
        line = br.readLine();
    }
    String everything = sb.toString();
} finally {
    br.close();
}

有人指出,在Java 7之后,你应该使用try-with-resources(即自动关闭)功能:

try(BufferedReader br = new BufferedReader(new FileReader("file.txt"))) {
    StringBuilder sb = new StringBuilder();
    String line = br.readLine();

    while (line != null) {
        sb.append(line);
        sb.append(System.lineSeparator());
        line = br.readLine();
    }
    String everything = sb.toString();
}

当我读取这样的字符串时,我通常无论如何都想对每行进行一些字符串处理,所以我会选择这个实现。

虽然如果我想实际上只是将文件读入字符串,我总是使用 Apache Commons IO 和类 IOUtils.toString() 方法。你可以在这里看看来源:

http://www.docjar.com/html/api/org/apache/commons/io/IOUtils.java.html

FileInputStream inputStream = new FileInputStream("foo.txt");
try {
    String everything = IOUtils.toString(inputStream);
} finally {
    inputStream.close();
}

Java 7 甚至更简单:

try(FileInputStream inputStream = new FileInputStream("foo.txt")) {     
    String everything = IOUtils.toString(inputStream);
    // do something with everything string
}

分割线

网友回答:

最简单的方法是使用 Java 中的类和 FileReader 对象。简单的例子:Scanner

Scanner in = new Scanner(new FileReader("filename.txt"));

Scanner有几种读取字符串、数字等的方法……您可以在 Java 文档页面上查找有关此内容的更多信息。

例如,将整个内容读入:String

StringBuilder sb = new StringBuilder();
while(in.hasNext()) {
    sb.append(in.next());
}
in.close();
outString = sb.toString();

此外,如果您需要特定的编码,您可以使用它代替:FileReader

new InputStreamReader(new FileInputStream(fileUtf8), StandardCharsets.UTF_8)

模板简介:该模板名称为【我想从在Java中读取和写入文件ASCII 数据,可能的方法及其区别是什么?】,大小是暂无信息,文档格式为.编程语言,推荐使用Sublime/Dreamweaver/HBuilder打开,作品中的图片,文字等数据均可修改,图片请在作品中选中图片替换即可,文字修改直接点击文字修改即可,您也可以新增或修改作品中的内容,该模板来自用户分享,如有侵权行为请联系网站客服处理。欢迎来懒人模板【Java】栏目查找您需要的精美模板。

相关搜索
  • 下载密码 lanrenmb
  • 下载次数 211次
  • 使用软件 Sublime/Dreamweaver/HBuilder
  • 文件格式 编程语言
  • 文件大小 暂无信息
  • 上传时间 03-04
  • 作者 网友投稿
  • 肖像权 人物画像及字体仅供参考
栏目分类 更多 >
热门推荐 更多 >
企业网站 微信模板 微信素材 响应式 微信公众平台 微信文章 微信图片 html5 自适应 单页式简历模板
您可能会喜欢的其他模板