哪个更好 - 使用String或File作为获取文件名的方法的参数类型

Mov*_*ast 11 java file-io

我有几种方法将文件名作为参数.我怀疑的是,什么是更好的方式来声明这些方法的参数.

就个人而言,我发现File更直观,但想知道这些事情的最佳实践是什么.

Nic*_*olt 21

我会传递java.io.InputStream- 这使代码更容易测试,并且不会将其绑定到文件系统.

这样你的代码最终会像:

public void normalizeData(InputStream in)
{
  ...
}
Run Code Online (Sandbox Code Playgroud)

并称之为:

myObject.normalizeData(new FileInputStream(myFile));
Run Code Online (Sandbox Code Playgroud)

要么

myObject.normalizeData(new FileInputStream("c:/myfile.txt"));
Run Code Online (Sandbox Code Playgroud)

或者在测试中

myObject.normalizeData(new ByteArrayInputStream("some test data".getBytes()));
Run Code Online (Sandbox Code Playgroud)

  • +1停止使答案更好,我只能投票一次:P (3认同)