如何在安卓系统中播放部分mp4文件
我正在遇到一个奇怪的情况,因为我正在开发一个在运行时间解密视频并播放视频的Android应用程序.解密过程已经进行了优化,我正在使用RC4算法和NIO频道进行复制,但问题是,对于250MB视频,它仍然需要大约1分10秒的时间,而我的客户最多希望它15秒.我正在考虑一种解决视频的解决方案,同时它被解密并复制了,但它没有发生,但我遇到的错误无法播放此视频.我正在使用视频播放视频.任何人都有任何想法,如何实现这一目标.我正在使用 设置视频URI v.setVideoURI(uri); 如果我播放一次解密,我可以播放视频. 请帮助我. 解决方案 当然,愿意在开始播放之前解密整个视频,这会使用户暴露出明显的延迟.您应该考虑流式体系结构. 典型的设计涉及javax.crypto.cipherinputstream类和本地HTTP实例. SDK中没有HTTP服务器的类,您必须实现自己的类别,否则寻找类似于Localsinglehttpserver的现有库. 看起来像:
0 2024-02-19
编程技术问答社区
如何获得FileInputStream到assets文件夹中的文件
我知道如何使用AssetManager从res/raw目录中读取InputStream> InputStream的File,但是对于我的特殊用例,我需要FileInputStream.我需要特别需要一个FileInputStream的原因是因为我需要通过调用getChannel(). 从中获取FileChannel对象 这是我到目前为止的代码,它读取File>>>> 的数据(在我的情况下是原始列表) public static int[] loadByMappedBuffer(Context context, String filename) throws IOException{ FileInputStream fis = context.openFileInput(filename); FileChannel ch = fis.getChannel(); MappedByteBuffer mbuff = ch.map(MapMode.READ_ONL
0 2024-02-17
编程技术问答社区
android.os.NetworkOnMainThreadException和非阻塞式套接字
i在非阻止模式下使用Java Nio插座,但是当我打电话给Write时,我仍然获得NetworkOnMainThreadException. java.nio.channels.SocketChannel fd = Network.createTcpSocket(); java.nio.channels.SocketChannel.open(); java.net.Socket socket = fd.socket(); socket.setTcpNoDelay(true); socket.setKeepAlive(true); fd.configureBlocking(false); //.. conect the socket int ret = fd.write(data); if(ret == 0) { // It will block. } 我希望这会起作用,因为插座不会阻塞,只需返回0,以防呼叫需要阻止.但是我仍然收到NetworkonMainThreadE
0 2024-02-13
编程技术问答社区
安卓系统加速从文件中读取少数信息的方法
在我的应用程序中,当应用程序启动时,我需要加载一些文件.我有6个不同的文件,其中内容是int数组,我需要尽快阅读它们.其中3个内容80k int,其他200K ints 这是我用来从文件中读取int数组的方法 public static int[] loadByMappedBuffer(Context context, String filename) throws IOException{ FileInputStream fis = context.openFileInput(filename); FileChannel ch = fis.getChannel(); MappedByteBuffer mbuff = ch.map(MapMode.READ_ONLY, 0, ch.size()); IntBuffer ibuff = mbuff.asIntBuffer(); int[] array = new int[ibuff.l
0 2024-02-10
编程技术问答社区
测量写到OutputStream时的中间吞吐量 [或者] 为什么write()是阻塞的,而read()不是?
我需要测量上传和下载大文件的中间吞吐量(使用 apache commons net api ). 下载:(没有问题) 所有内容都可以下载,它使用以下代码: InputStream is = ftp.retrieveFileStream(filePath); byte[] buffer = new byte[256 * 1024]; int read; while ((read = is.read(buffer, 0, buffer.length)) != -1) { Log.v(TAG, "Read = " + read); } 在这里,缓冲区的大小为256 kb,下载文件的总大小为1 MB.仍然每个单独的呼叫is.read()仅返回约2 kb.在这种情况下,read() 在缓冲液满足之前不会阻止.这使我能够测量中间下载吞吐量.到目前为止还不错. 上传:(有问题) 现在痛苦了.当我分配类似大小的缓冲区以写入OutputStream时,呼叫wri
2 2024-02-09
编程技术问答社区
如何使用Android NDK将一个整数颜色的像素阵列绑定到纹理上?
我正在尝试将我的Java OpenGL代码移植到Android上,并需要Intbuffer实现. 基本上我在Java中所做的工作以将任意整数RGBA像素颜色数组加载到纹理中是: // pixel array pixelIntArray = new int[width * height]; bb = ByteBuffer.allocateDirect(pixelIntArray.length * 4); bb.order(ByteOrder.nativeOrder()); // native buffer pixelBuffer = bb.asIntBuffer(); // push integer array of pixels into buffer pixelBuffer.put(pixelIntArray); pixelBuffer.position(0); // bind buff
6 2024-02-07
编程技术问答社区
如何在Android中使用java.nio.file包?
我想使用JDK7的一部分使用Java.nio.file API创建一个为Android的文件管理器应用程序.我认为此(java.noi.file)API包含简单的解决方案来设计文件管理器应用程序,其中JDK6(IO)和Apache Commons IO API没有相同的设施. 请提供一些解决方案,我如何在Android应用中使用JDK7(IO). 谢谢! 解决方案 最初是:简单的答案是您无法做到. Android是基于Java 6的,(AFAIK)没有Java 7的java.nio.file类别的Backport到Android. (这不足为奇.端口java.nio.file将需要对Davlik VM的本机代码库进行重大更改.) 更新:根据Android javadocs ,对java.nio.file软件包的支持已添加到API级别的Android 26中.这对应于2017年8月发布的Oreo版本. 您可以告诉我,我应该使用什么API来满足我的要求.
4 2024-01-29
编程技术问答社区
如何在Java中把文件路径列表转换为一棵hirachial树
有人可以给我一些指针.我想列出文件路径(只是字符串)的列表,然后将其转换为类似结构的Hierachial树.因此,有两个任务,分析字符串以创建树,并创建树或某种映射结构,以实际将结果列入. (然后,第三个任务是将树解析为以HTML中的树作为树显示) 我正在使用Java 7,所以我认为我可以使用路径来完成第一部分,但是努力获得清晰的算法. C:\Music\Blur\Leisure C:\Music\KateBush\WholeStory\Disc1 C:\Music\KateBush\WholeStory\Disc2 C:\Music\KateBush\The Kick Inside C:\Music\KateBush\The Dreaming C:\MusicUnprocessed\Blue\ParkLife 所以它给出 C:\ Music Blur Leisure Kate Bush
0 2024-01-23
编程技术问答社区
如何使用反应流进行NIO二进制处理?
是否有一些使用 org.reaeactiveStreams 库库使用Java Nio nio nio nio nio nio ni io来处理大型数据流,是否有一些代码示例(高性能)?我的目标是分布式处理,因此使用Akka的示例是最好的,但是我可以弄清楚. 似乎仍然是大多数(我希望不是全部)在Scala中读取文件的示例Source(非二进制)或直接Java Nio(甚至是Files.readAllBytes!) 也许我错过了一个激活器模板? ( akkka流akkka scala!除了我需要的一切,除了我需要的一切/nio侧) 解决方案 不要使用scala.collection.immutable.Stream来消耗这样的文件,原因是它执行了记忆 - 也就是说,虽然是的,但它会使整个流(记忆)保持在内存中! 这绝对是不是当您想到"流处理文件"时,您想要什么. Scala的流之所以如此起来,是因为在功能设置中,这是完全有道理的 - 您可以避免一次又一次地计算fib
0 2024-01-22
编程技术问答社区
有没有适用于.NET的NIO框架?
.NET是否有任何非阻滞IO框架? 我正在寻找类似于 apache mina 和 编辑:更好地解释我想看到的内容,这是您可以使用Mina做什么的基本示例: 在Mina中,我可以实现这样的protocoldecoder: public class SimpleDecoder extends CumulativeProtocolDecoder { protected boolean doDecode(IoSession session, IoBuffer in, ProtocolDecoderOutput out) throws Exception { if (in.remaining()
4 2024-01-03
编程技术问答社区
在压缩包内写入(修改或添加)一个文件
我遵循说明 此线程,使用我在那里的代码能够在不取消压缩和推荐的情况下将文件添加到zip文件中,但是我有问题,让我向您展示我的代码: private void saveFileIntoProjectArchive(Path pathOfFile) { this.projectArchiveFile.setWritable(true, false); Path zipFilePath = Paths.get(this.projectArchiveFile.getAbsolutePath()), pathToSaveInsideZIP = null; FileSystem fs; try { fs = FileSystems.newFileSystem(zipFilePath, null); pathToSaveInsideZIP = fs.getPath(pathOfFile.toString().
10 2023-12-26
编程技术问答社区
如何用java-preferred java8以多线程方式解压巨大的文件夹?
转向: 我正在尝试解开5GB zipperiped文件,平均我大约需要30分钟,这对于我们的应用程序来说是很多,我正在尝试减少时间. 我尝试了很多组合,更改了缓冲区的大小(默认情况下,我的写入块是4096字节),更改了NIO方法,库,所有结果都非常相同. 仍然没有尝试的一件事就是将块划分为块,因此请通过多线程块阅读. 摘要代码是: private static ExecutorService e = Executors.newFixedThreadPool(20); public static void main(String argv[]) { try { String selectedZipFile = "/Users/xx/Documents/test123/large.zip"; String selectedDirectory = "/Users/xx/Documents/test2
6 2023-12-26
编程技术问答社区
Java NIO ZipFileSystem。在创建文件系统时,"未找到zip END头"。
我在这里问这个问题,因为谷歌搜索此错误仅使我在编写zip文件时打击,而我只是想阅读它. 我有一个单元测试,我正在尝试测试以下生产代码: Map zipProps = new HashMap(); URI zipUri = URI.create("jar:file:" + itemZipPath.toString()); try (FileSystem zipfiles = FileSystems.newFileSystem(zipUri, zipProps)) { // do stuff... } catch (IOException e) { // log an error } 但是,这在包含尝试的行上失败: java.util.zip.ZipError: zip END header not found at com.sun.nio.zipfs.ZipFileSystem.zerror(ZipFileSystem.ja
12 2023-12-26
编程技术问答社区
(使用NIO对文件进行(去)压缩
在许多在线示例中,文件(de)使用编码缓冲区在Java中压缩.但是,使用NIO,无需选择良好的缓冲尺寸.我找到了文件和插座的示例,但是是否有一个NIO频道用于压缩输入(例如GZIPInputStream),因此您可以使用transferFrom而不是自己创建byte[]缓冲区? 解决方案 否,尚不存在专业的邮政通道... 我认为您可以执行以下操作.使用NIO从您要缓冲的任何频道中读取.然后检索您刚刚读取从缓冲区到字节数组的字节,使用bytearrayInputStream包裹数组,然后将其传递给ZipinputStream. 其他解决方案 您可以在Java.nio.nio.channels.Channels中使用静态实用方法来包装通道中的流,反之亦然. 例如.要创建一个频道,您可以从中读取未压缩的数据: FileChannel fc = new RandomAccessFile("input.gz", "r").getChannel(); Read
2 2023-12-26
编程技术问答社区
在Java中有效地读取压缩文件
我从事一个研究大量数据的项目. 我有很多(数千个)的zip文件,每个文件包含一个简单的TXT文件,其中数千行(约80k行). 我目前正在做的是以下内容: for(File zipFile: dir.listFiles()){ ZipFile zf = new ZipFile(zipFile); ZipEntry ze = (ZipEntry) zf.entries().nextElement(); BufferedReader in = new BufferedReader(new InputStreamReader(zf.getInputStream(ze))); ... 通过这种方式,我可以按行读取文件,但绝对太慢了. 考虑到需要阅读的大量文件和行,我需要以更有效的方式阅读它们. 我已经寻找了另一种方法,但是我找不到任何东西. 我认为我应该使用的是Java Nio API,旨在用于密集的I/O操作,但我不知道如何将它们与zip文件一起使用. 任何帮助真的将不胜感
6 2023-12-26
编程技术问答社区
从FileChannel(Java NIO)读取GZIP文件
我需要读取/解开给定filechannel的.gz文件. 我已经使用GZIPINPUTSTREAM来提取GZIP档案,但这不会使用Filechannel.我无法访问FileChannel的原始FileInputStream. 如果有人可以告诉我一种很好的方法(或至少任何)阅读filechannel的Gzip,我将非常感谢. 改编自 解决方案 您可以在Filechannel周围获得包装输入流: FileChannel fc = ... GZIPInputStream gis = new GZIPInputStream(Channels.newInputStream(fc)); 其他解决方案 是的,有一个解决方案.实施GZIP非常简单.您需要Alfter和CRC32,再加上读取标题/拖车.不幸的是,java.util.zip.Inflater仅服用byte[] byte[]是次优的(直接缓冲液本来会更有效).但是,使用非直接缓冲区和bytebuffer.arr
20 2023-12-26
编程技术问答社区
Java语言util。拉链ZipError:CEN标头无效(签名错误)
我在Red Hat Linux上使用Java 1.7.0_40,我有以下代码: Path zipfile = Paths.get(filename); FileSystem fs = FileSystems.newFileSystem(zipfile, FileTest.class.getClassLoader()); filename变量指向788MB的ZIP文件. ZIP文件的未压缩大小为8.3GB.当我运行上面的代码时,我会得到以下例外: Exception in thread "main" java.util.zip.ZipError: invalid CEN header (bad signature) at com.sun.nio.zipfs.ZipFileSystem.zerror(ZipFileSystem.java:1605) at com.sun.nio.zipfs.ZipFileSystem.initCEN(ZipFi
14 2023-12-26
编程技术问答社区
使用ZipFileSystem压缩一个巨大的文件夹会导致OutOfMemoryError
java.nio软件包通过将zip文件视为文件系统来处理zip文件.这使我们能够像通常的文件一样处理zip文件内容.因此,可以通过简单地使用Files.copy将所有文件复制到zip文件中来实现整个文件夹.由于还要复制子文件夹,我们需要一个访客: private static class CopyFileVisitor extends SimpleFileVisitor { private final Path targetPath; private Path sourcePath = null; public CopyFileVisitor(Path targetPath) { this.targetPath = targetPath; } @Override public FileVisitResult preVisitDirectory(final Path dir, final Basi
2 2023-12-26
编程技术问答社区
如何在SocketChannel关闭时收到通知?
我想在 SocketChannel SocketChannel SocketChannel 具有其/* */ protected final SelectionKey register(AbstractSelectableChannel paramAbstractSelectableChannel, int paramInt, Object paramObject) /* */ { /* 128 */ if (!(paramAbstractSelectableChannel instanceof SelChImpl)) /* 129 */ throw new IllegalSelectorException(); 现在,我不能覆盖register的方法来委派包装SocketChannel,因为它在AbstractSelectableChannel中声明为final,我无法实现SelChImpl,因为它在软件包.从这里我看到的唯一方法是制作自己的SelectorProvider和Se
6 2023-12-15
编程技术问答社区
使用java获取文件所有者元数据信息
我正在尝试使用此代码检索文件的所有者: Path file = Paths.get( fileToExtract.getAbsolutePath() ); PosixFileAttributes attr = Files.readAttributes(file, PosixFileAttributes.class); //line that throws exception System.out.println(attr.owner.getName()); 取自Oracle的页面( http://docs.oracle.com/Javase/tutorial/essential/io/fileattr.html ) ,但我总是在上面指示的线上得到一个无支撑的exception. java.lang.UnsupportedOperationException at sun.nio.fs.WindowsFileSystemProvider.re
16 2023-12-06
编程技术问答社区