不使用任何库来编写文件

时间:2015-11-24 15:17:01

标签: java file

在Java中,有没有办法在不导入类的情况下编写文件(例如java.io)。我知道一种方法是做这样的事情:

Runtime.getRuntime().exec("echo 'test' > test.txt ")

我正在寻找其他方法来实现类似的结果。

2 个答案:

答案 0 :(得分:3)

  

在Java中,有没有办法在不导入类的情况下编写文件(例如java.io)

不,没有。在Java中,import语句只是Java编译器解析非StringRuntime等非限定名称的快捷方式,因此您无需完全限定所有名称。源代码 - 编译完成后,在.class文件中,只有包含包名的完全限定引用。

即便是你的例子

Runtime.getRuntime().exec("echo 'test' > test.txt ")

将成为

java.lang.Runtime.getRuntime().exec("echo 'test' > test.txt ")

.class文件中:

$ javap -c Sample.class
  ...
  public static void main(java.lang.String[]) throws java.io.IOException;
    Code:
       0: invokestatic  #19                 // Method java/lang/Runtime.getRuntime:()Ljava/lang/Runtime;
       3: ldc           #25                 // String echo 'test' > test.txt
       5: invokevirtual #27                 // Method java/lang/Runtime.exec:(Ljava/lang/String;)Ljava/lang/Process;
       8: pop
       9: return

另见How java import works

答案 1 :(得分:1)

这个命题很荒谬。在没有使用[insert here here]为此目的提供的工具的情况下,询问如何在[在此处插入语言]中执行某些操作是没有意义的。

特别是在Java中,您可以在不依赖标准库的情况下执行 nothing 。我们甚至无法使用至少一个ClassLoader以及ClassLoader所依赖的每个班级来加载您的课程,包括java.lang.Stringjava.util.Locale,{{1和其他许多人。您没有在代码中明确引用这些并不意味着您的程序不依赖它们。

此外,它没有为您提供任何有用的功能,以避免Java代码中的java.io.InputStream语句,因为它们没有运行时表现形式:它们纯粹以方便程序员。