相关疑难解决方法(0)

从弹簧控制器下载文件

我有一个要求,我需要从网站上下载PDF.PDF需要在代码中生成,我认为这将是freemarker和像iText这样的PDF生成框架的组合.有更好的方法吗?

但是,我的主要问题是如何允许用户通过Spring Controller下载文件?

java spring controller file download

354
推荐指数
9
解决办法
41万
查看次数

获取文件的总大小(以字节为单位)

可能重复:
java有效地获取文件大小

我有一个名为filename的文件,位于E://file.txt.

FileInputStream fileinputstream = new FileInputStream(filename);
Run Code Online (Sandbox Code Playgroud)

我想要做的是以字节为单位计算此文件的大小.我怎么能这样做?

java fileinputstream

106
推荐指数
4
解决办法
19万
查看次数

获取文件夹或文件的大小

如何在Java中检索文件夹或文件的大小?

java filesystems

99
推荐指数
7
解决办法
10万
查看次数

在 Java 中获取文件大小的最新方法

我知道这个问题已在不同的帖子中广泛讨论:

我的问题是我需要获取大量文件(HD 中存在的常规文件)的大小,为此我需要一个提供最佳性能的解决方案。我的直觉是应该通过直接读取文件系统表的方法来完成,而不是通过读取整个文件内容来获取文件的大小。看文档很难知道具体使用了哪种方法。

本页所述

Files 有 size() 方法来确定文件的大小。这是最新的 API,推荐用于新的 Java 应用程序。

但这显然不是最好的建议,就性能而言。我对不同的方法进行了不同的测量:

  1. file.length();

  2. Files.size(path);

  3. BasicFileAttributes attr = Files.readAttributes(path, BasicFileAttributes.class); attr.size();

令我惊讶的是,这file.length();是最快的,必须创建一个File对象而不是使用较新的Path. 如果这也读取文件系统或内容,我现在不会。所以我的问题是:

在最新的 Java 版本 (9/10/11) 中,最快的、推荐的获取文件大小的方法是什么?


编辑

我认为这些细节不会为问题增加任何内容。基本上基准是这样的:

Length: 49852  with previous instanciation: 84676
Files: 3451537 with previous instanciation: 5722015
Length: 48019 with previous instanciation:: 79910
Length: 47653 with previous instanciation:: 86875
Files: 83576 with previous instanciation: 125730
BasicFileAttr: 333571 with previous instanciation:: 366928
..... …
Run Code Online (Sandbox Code Playgroud)

java performance filesize java-11

8
推荐指数
0
解决办法
2179
查看次数

获取Java InputStream后面的文件的字节数

正如标题所说,我需要知道文件有多少字节在InputStream"后面".我不想下载所有字节和计数(需要很长时间).我只需要知道文件有多少字节.

像这样:

int numberOfBytes = countBytes(inputStream);
Run Code Online (Sandbox Code Playgroud)

所以,我需要一个countBytes实现(InputStream inputStream)

java bytearray inputstream

3
推荐指数
1
解决办法
6816
查看次数

长期运行的构造函数是否会创建半初始化对象?

我有一个类"A",它读取XML文件并进行一些处理.我在构造函数中添加了一个方法"load",但我想知道如果XML文件大小很大并且需要时间加载会发生什么.

class A
{
    public String fileName;

    A(String fileName)
    {
        this.fileName = fileName;
        load();
    }

    private load()
    {
        //here i load some xml file by given file name;
    }

    public searchByTag(String sometag)
    {
        //some search
    }

    public extractData()
    {
        //extract some data
    }
}  
Run Code Online (Sandbox Code Playgroud)

例如,如果我们有以下情况:

A a = new A("somefile");
a.searchByTag("tag");
a.extractData();
Run Code Online (Sandbox Code Playgroud)

对象"a"是在加载文件后创建的,对吧?

java constructor initialization

2
推荐指数
1
解决办法
561
查看次数

在Java中获取文件属性

如果java.io.File代表一个.exe文件,我该如何发现文件属性 - 例如:创建的大小和日期,以及如何发现可执行属性中的数据 - 例如:文件版本?

java time calendar date file

2
推荐指数
1
解决办法
2万
查看次数

文件大小缓存和Java中文件大小的高效检索

我需要确定一个非常大的字符编码文件的大小.读取该文件需要花费大量时间.

我的理解是,当首次创建/修改文件时,大小会被缓存,因此操作系统可以在请求大小时(例如,文件管理器)快速检索该值.(例如,在win explorer中打开大文件的属性对话框时似乎很快)

假设以上情况属实,可以用Java检索吗?我原以为length()读取文件来确定大小......或者它实际上是否获得了这个缓存的大小?或者,File对象的创建是否会读取/检索缓存的大小?

我自己的研究还没有能够回答这些问题.

我理解我会得到一些帮助

谢谢

java file filesize

1
推荐指数
2
解决办法
966
查看次数