将整个文本文件转换为Java中的string

Java是否有单行指令读取到文本文件,如C#所具有的?

我的意思是,在Java中有这样的东西吗?

String data = System.IO.File.ReadAllText("path to file"); 

如果不是的话……这样做的最佳方式是什么?

编辑:
我更喜欢Java标准库中的一种方式…我不能使用第三方库..

AFAIK,没有标准图书馆的单行。 标准库的典型方法是这样的:

 public static String readStream(InputStream is) { StringBuilder sb = new StringBuilder(512); try { Reader r = new InputStreamReader(is, "UTF-8"); int c = 0; while ((c = r.read()) != -1) { sb.append((char) c); } } catch (IOException e) { throw new RuntimeException(e); } return sb.toString(); } 

笔记:

  • 为了从文件中读取文本 ,使用FileInputStream
  • 如果性能很重要,而且您正在读取大型文件,则最好将stream包装在BufferedInputStream中
  • 该stream应该被主叫方closures

apache commons-io有:

 String str = FileUtils.readFileToString(file, "utf-8"); 

但是在标准的java类中没有这样的实用工具。 如果你(由于某种原因)不需要外部库,你必须重新实现它。 这里有一些例子,或者,你可以看看它是如何通过commons-io或Guava实现的。

不在主要的Java库中,但可以使用Guava :

 String data = Files.toString( new File("path.txt"), Charsets.UTF_8 ); 

或读线:

 List<String> lines = Files.readLines( new File("path.txt"), Charsets.UTF_8 ); 

当然,我敢肯定,还有其他的第三方库,这将使得它很容易 – 我只是最熟悉番石榴。

Java 7通过Files类改进了这种令人遗憾的事务状态(不要与Guava的同名类混淆),您可以从文件中获取所有行,而无需使用外部库:

 List<String> fileLines = Files.readAllLines(path, StandardCharsets.UTF_8); 

或成一个string:

 String contents = new String(Files.readAllBytes(path), StandardCharsets.UTF_8); // or equivalently: StandardCharsets.UTF_8.decode(ByteBuffer.wrap(Files.readAllBytes(path))); 

如果你需要一个干净的JDK的开箱即用,这很好。 这就是说,你为什么没有番石榴写Java?

Java 8中 (没有外部库),你可以使用stream。 这段代码读取一个文件,并把所有以','分隔的行放入一个String中。

 try (Stream<String> lines = Files.lines(myPath)) { list = lines.collect(Collectors.joining(", ")); } catch (IOException e) { LOGGER.error("Failed to load file.", e); } 
 Path path = FileSystems.getDefault().getPath(directory, filename); String fileContent = new String(Files.readAllBytes(path), StandardCharsets.UTF_8); 
  String fileContent=""; try { File f = new File("path2file"); FileInputStream inp = new FileInputStream(f); byte[] bf = new byte[(int)f.length()]; inp.read(bf); fileContent = new String(bf, "UTF-8"); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }