【问题标题】:java-how can someone find out the size of a txt file before creationjava-如何在创建之前找出txt文件的大小
【发布时间】:2014-01-22 17:09:05
【问题描述】:

我有一个字符串数组,需要保存到 txt 文件中。我只能制作最大 64kb 的文件,所以我需要知道何时停止将字符串放入文件中。 有没有一些方法可以有一个字符串数组,我可以在不创建文件的情况下找出文件有多大?

【问题讨论】:

  • 不要写信给FileOutputStream,而是写信给ByteArrayOutputStream。如果超过 64kb 就停止。如果没有,请将其复制到文件中。

标签: java string file


【解决方案1】:

文件会被 ASCII 编码吗?如果是这样,你写的每个字符都是 1 个字节。将字符串长度加起来,如果字符总数超过 64k,你就知道停止。不要忘记在字符串之间包含换行符,以防你这样做。

【讨论】:

    【解决方案2】:

    Java 带来了一个名为 NIO 的用于输入和输出数据的库。我想你应该知道如何使用它。如果您不知道如何使用 NIO,请查看以下链接以了解更多信息:

    http://en.wikipedia.org/wiki/New_I/O

    https://blogs.oracle.com/slc/entry/javanio_vs_javaio

    http://docs.oracle.com/javase/tutorial/essential/io/fileio.html

    我们都知道,所有的数据类型最终都只是字节。对于角色,我们有同样的东西,只是有更多的细节。 World 中的字符(字母、数字、符号等)映射到一个名为 Unicode 的表中,使用一些字符编码算法可以在将文本保存到文件时获得一定数量的字节。我将如何花费数小时为您谈论它,我建议您查看以下链接以了解有关字符编码的更多信息:

    http://www.w3schools.com/tags/ref_charactersets.asp

    https://stackoverflow.com/questions/3049090/character-sets-explained-for-dummies

    https://www.w3.org/International/questions/qa-what-is-encoding.en

    http://unicode-table.com/en/

    http://en.wikipedia.org/wiki/Character_encoding

    通过使用Charset、CharsetEncoder 和CharsetDecoder,您可以选择特定的字符编码来保存您的文本,具体取决于文件的最终大小可能会有所不同。通过使用 UTF-8(这里的 8 表示位),您最终将保存文件中的每个字符,每个字符 1 个字节。使用 UTF-16(这里的 16 表示位),您将使用 2 个字节保存每个字符。这意味着当您使用编码时,您最终会为每个保存的字符保留一定数量的字节。在以下链接中,您可以找到当前 Java API 支持的实际编码:

    http://docs.oracle.com/javase/7/docs/technotes/guides/intl/encoding.doc.html

    使用 NIO 库,您无需实际保存文件即可知道您的大小。如果您只是使用ByteBuffer,您可能已经知道文件的最终大小,甚至没有保存它。

    有任何问题,请评论。

    【讨论】:

      猜你喜欢
      • 2015-01-05
      • 1970-01-01
      • 2015-12-20
      • 1970-01-01
      • 2018-06-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-18
      相关资源
      最近更新 更多