相关疑难解决方法(0)

使用Android下载文件,并在ProgressDialog中显示进度

我正在尝试编写一个更新的简单应用程序.为此,我需要一个简单的功能,可以下载一个文件,并显示当前进度ProgressDialog.我知道怎么做ProgressDialog,但我不知道如何显示当前进度以及如何首先下载文件.

java android download android-asynctask

1017
推荐指数
11
解决办法
52万
查看次数

使用FileInputStream时如何确定理想的缓冲区大小?

我有一个从文件创建MessageDigest(哈希)的方法,我需要对很多文件(> = 100,000)执行此操作.我应该用多大的缓冲区来读取文件以最大限度地提高性能?

大多数人都熟悉基本代码(我将在这里重复以防万一):

MessageDigest md = MessageDigest.getInstance( "SHA" );
FileInputStream ios = new FileInputStream( "myfile.bmp" );
byte[] buffer = new byte[4 * 1024]; // what should this value be?
int read = 0;
while( ( read = ios.read( buffer ) ) > 0 )
    md.update( buffer, 0, read );
ios.close();
md.digest();
Run Code Online (Sandbox Code Playgroud)

什么是最大化吞吐量的缓冲区的理想大小?我知道这是依赖于系统的,我很确定它的操作系统,文件系统硬盘依赖,并且可能还有其他硬件/软件.

(我应该指出,我对Java有点新手,所以这可能只是一些我不知道的Java API调用.)

编辑:我不提前知道将要使用的系统类型,所以我不能假设很多.(因为那个原因,我正在使用Java.)

编辑:上面的代码缺少像try..catch这样的东西,以使帖子更小

java filesystems performance file-io buffer

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

FileChannel ByteBuffer和Hashing Files

我在java中构建了一个文件哈希方法,它接受a的输入字符串表示,filepath+filename然后计算该文件的哈希值.散列可以是任何本机支持的java散列算法,例如MD2through SHA-512.

我试图找出最后一滴性能,因为这个方法是我正在研究的项目的一个组成部分.我被建议尝试使用FileChannel而不是常规FileInputStream.

我原来的方法:

    /**
     * Gets Hash of file.
     * 
     * @param file String path + filename of file to get hash.
     * @param hashAlgo Hash algorithm to use. <br/>
     *     Supported algorithms are: <br/>
     *     MD2, MD5 <br/>
     *     SHA-1 <br/>
     *     SHA-256, SHA-384, SHA-512
     * @return String value of hash. (Variable length dependent on hash algorithm used)
     * @throws IOException If file is invalid.
     * @throws HashTypeException If …
Run Code Online (Sandbox Code Playgroud)

java hash file

5
推荐指数
1
解决办法
3607
查看次数

Java NIO与非NIO性能

我花了很多时间尝试优化文件哈希算法,以便尽可能地查看每一次性能下降.

查看我以前的SO主题:

获取文件哈希性能/优化

FileChannel ByteBuffer和Hashing Files

确定适当的缓冲区大小

建议多次使用它Java NIO来获得本机性能提升(通过将缓冲区保留在系统中而不是将它们带入JVM).但是,我的NIO代码运行速度要慢很多基准测试(每个算法反复使用相同的文件进行散列,以消除任何可能导致结果偏差的操作系统/驱动器"魔力".

我现在有两种方法可以做同样的事情:

This one runs faster almost every time:

/**
 * Gets Hash of file.
 * 
 * @param file String path + filename of file to get hash.
 * @param hashAlgo Hash algorithm to use. <br/>
 *     Supported algorithms are: <br/>
 *     MD2, MD5 <br/>
 *     SHA-1 <br/>
 *     SHA-256, SHA-384, SHA-512
 * @param BUFFER Buffer size in bytes. Recommended to stay in<br/>
 *          multiples of 2 such as 1024, …
Run Code Online (Sandbox Code Playgroud)

java hash jvm

4
推荐指数
1
解决办法
1576
查看次数

java读取视频数据并写入另一个文件

我正在读取一个以字节为单位的视频文件数据并将其发送到另一个文件,但收到的视频文件无法正常播放并且断断续续。

谁能解释一下为什么会发生这种情况,并感谢解决方案。

我的代码如下

import java.io.*;

public class convert {

  public static void main(String[] args) {

    //create file object
    File file = new File("B:/music/Billa.mp4");

    try
    {
      //create FileInputStream object
      FileInputStream fin = new FileInputStream(file);


       byte fileContent[] = new byte[(int)file.length()];
       fin.read(fileContent);

       //create string from byte array
       String strFileContent = new String(fileContent);

       System.out.println("File content : ");
       System.out.println(strFileContent);

       File dest=new File("B://music//a.mp4");
       BufferedWriter bw=new BufferedWriter(new FileWriter(dest));
       bw.write(strFileContent+"\n");
       bw.flush();

    }
    catch(FileNotFoundException e)
    {
      System.out.println("File not found" + e);
    }
    catch(IOException ioe)
    {
      System.out.println("Exception while reading the …
Run Code Online (Sandbox Code Playgroud)

java file-io copy file video-streaming

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