标签: inputstream

应用程序如何使用JAR内的文件进行读写?

我需要将数据存储到.jar文件中的文件中并再次读取.

我知道我可以使用Class.getResourceAsStream()方法,但它会返回一个InputStream我可以读取的内容.但我想找一种写作方式.

java jar inputstream outputstream

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

打开失败:EBUSY(设备或资源繁忙)

我的应用程序中有一个奇怪的错误.

在我的应用程序中,可以下载zipFile,读取内容,并删除它.它究竟是什么并不重要.

问题:仅在Motorola Xoom(版本4.0.4)上我可以下载文件,解压缩,我可以读取数据,我可以删除所有内容.但是,如果我再次尝试下载文件并解压缩文件并将文件复制到SD卡,则会因错误EBUSY(设备或资源繁忙)而崩溃.

  1. 为什么它只是第一次工作?
  2. 什么意思错误?
  3. 为什么我只在Xoom上出现此错误?

我找不到任何解决方案.在所有其他设备上它工作正常,没有错误或问题.

logcat的:

07-18 12:27:46.774: E/PrepareMagTask(10057): IOException
07-18 12:27:46.774: E/PrepareMagTask(10057): java.io.FileNotFoundException: /mnt/sdcard/Android/data/com.xxxxxx.android/files/content/23760/emag.db: open failed: EBUSY (Device or resource busy)
07-18 12:27:46.774: E/PrepareMagTask(10057):    at libcore.io.IoBridge.open(IoBridge.java:406)
07-18 12:27:46.774: E/PrepareMagTask(10057):    at java.io.FileOutputStream.<init>(FileOutputStream.java:88)
07-18 12:27:46.774: E/PrepareMagTask(10057):    at java.io.FileOutputStream.<init>(FileOutputStream.java:73)
07-18 12:27:46.774: E/PrepareMagTask(10057):    at com.xxxxx.android.util.io.ZipHelper.uncompressEntry(ZipHelper.java:35)
07-18 12:27:46.774: E/PrepareMagTask(10057):    at com.xxxxx.android.task.PrepareMagTask.doInBackground(PrepareMagTask.java:271)
07-18 12:27:46.774: E/PrepareMagTask(10057):    at com.xxxxx.android.task.PrepareMagTask.doInBackground(PrepareMagTask.java:1)
07-18 12:27:46.774: E/PrepareMagTask(10057):    at android.os.AsyncTask$2.call(AsyncTask.java:264)
07-18 12:27:46.774: E/PrepareMagTask(10057):    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
07-18 12:27:46.774: E/PrepareMagTask(10057):    at java.util.concurrent.FutureTask.run(FutureTask.java:137)
07-18 12:27:46.774: E/PrepareMagTask(10057):    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
07-18 12:27:46.774: E/PrepareMagTask(10057):    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569) …
Run Code Online (Sandbox Code Playgroud)

android inputstream unzip

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

将文件从外部存储加载到Inputstream

我的外部目录中有一个视频文件.我怎样才能将它加载到inputstream变量.暂时我正在读取res/raw文件夹中的文件,但我想从sdcard中读取它.我也不知道文件的名称,但它的路径将通过意图收到.检查以下代码

public class SonicTest extends Activity
{
VideoView videoView;
String uri;
InputStream soundFile;
File file;
@Override
public void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);                      
    setContentView(R.layout.main);

}

public void play(View view)
{
    new Thread(new Runnable() 
    {
        public void run()
        {
            float speed= (float) 1.0;
            float pitch= (float) 1.5;
            float rate= (float) 1.0;
            uri= Environment.getExternalStorageDirectory().toString();
            uri=uri+"/video.3gp";
            AndroidAudioDevice device = new AndroidAudioDevice(22050, 1);
            Sonic sonic = new Sonic(22050, 1);
            byte samples[] = new byte[4096];
            byte modifiedSamples[] = new byte[2048];
            InputStream soundFile = null;

    //soundFile = …
Run Code Online (Sandbox Code Playgroud)

android inputstream android-file

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

为什么关闭()输入流是好的?

我有Java编程语言的丰富经验.但是我一直想到的一件事是为什么它close() java.io.InputStream或它的子类是必要的?

现在java.io.OutputStream,例如FileOutputStream,在写入文件之后,如果我们不close()输出输出流,那么我们打算在文件中写入的数据将保留在缓冲区中,而不会写入文件.

所以有必要close()OutputStream.但是,我从来没有过之后任何痛苦的经历不打烊InputStream.

但是,互联网和书籍上的所有文章仍然说关闭任何流可能是一个InputStream或一个OutputStream.

所以我的问题是,为什么它成为必要close()InputStream?人们说你可能会面临内存泄漏而不是close()它.那是什么样的内存泄漏?

java buffer inputstream outputstream

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

你如何决定用于InputStream.read()的byte []大小?

从InputStreams读取时,如何确定byte []的大小?

int nRead;
byte[] data = new byte[16384]; // <-- this number is the one I'm wondering about

while ((nRead = is.read(data, 0, data.length)) != -1) {
  ...do something..
}
Run Code Online (Sandbox Code Playgroud)

你什么时候使用小型和大型?有什么区别?这个数字是否需要以1024为增量?如果它是来自网络和磁盘的InputStream会有所不同吗?

非常感谢,我似乎无法在其他地方找到明确的答案.

java io inputstream

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

Process.waitFor(),threads和InputStreams

在伪代码中,这就是我正在做的事情:

Process proc = runtime.exec(command);
processOutputStreamInThread(proc.getInputStream());
processOutputStreamInThread(proc.getErrorStream());
proc.waitFor()
Run Code Online (Sandbox Code Playgroud)

但是,有时processOutputStreamInThread看不到任何输出,有时也看不到.粗略地说,该方法创建BufferedInputStream命令的输出并将其发送到记录器.

根据我所看到的,我猜,command不用有它的所有倒入美联储流输出getInputStream()getErrorStream(),从而使流是空的.

我的试验结果如下:

(1)waitFor()java.lang.Process中是否要求在返回之前读取已执行程序的输出?

文档仅说明:

如果需要,导致当前线程等待,直到此Process对象表示的进程终止.如果子进程已终止,则此方法立即返回.如果子进程尚未终止,则调用线程将被阻塞,直到子进程退出.

(2)在什么条件下,流提供getInputStreamgetErrorStream需要关闭和/或它们是否自动关闭?

文档仅说明:

获取子进程的错误流.该流获取从此Process对象表示的进程的错误输出流中传输的数据.

实现说明:缓冲输入流是个好主意.

一个用户报告说他必须自己关闭流,但是我至少在一部分时间内得到一个异常,表明当我尝试这样做时,流已经关闭.

编辑:getOutputStreamgetInputStream,现在提出上述.

解决方案:问题最终导致在某些情况下,用于处理输出流的线程在我的非常短暂的进程完成之后才会运行,从而导致输入流不给我任何数据. waitFor没有等待执行程序的输出.相反,程序在收集任何输出之前运行并终止.

我使用线程是因为我不确定我将在标准错误和标准输出上获得多少输出,并且我希望能够同时处理两个,而不会阻塞其中一个或者只有其中一个有可用数据.但是,因为我的线程无法一致地读取执行程序的输出,所以这是一个非解决方案.

我的最终编码看起来像这样:

ProcessBuilder pb = new ProcessBuilder(cmdargs);
pb.redirectErrorStream(true);
Process proc = pb.start();
processOutputStream(proc.getInputStream());
proc.waitFor()
Run Code Online (Sandbox Code Playgroud)

java multithreading inputstream process

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

如何使用HttpModule记录请求输入流,然后重置InputStream位置

我正在尝试使用像这样的IHttpModule记录http请求的内容:

public class LoggingModule : IHttpModule
{
    public void Init(HttpApplication context)
    {
        context.BeginRequest += ContextBeginRequest;
    }

    private void ContextBeginRequest(object sender, EventArgs e)
    {
        var request = ((HttpApplication)sender).Request;
        string content;

        using (var reader = new StreamReader(request.InputStream))
        {
            content = reader.ReadToEnd();
        }

        LogRequest(content)
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是,在将输入流读取到结尾后,InputStream似乎已消失或更有可能,光标位于流的末尾.

我尝试过request.InputStream.Position = 0;,request.InputStream.Seek(0, SeekOrigin.Begin);但都没有工作.

.net inputstream httpmodule

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

Console.Read()和Console.ReadLine()之间的区别?

我是这个领域的新手,我很困惑:Console.Read()和之间的真正区别是Console.ReadLine()什么?

c# console inputstream input

31
推荐指数
4
解决办法
17万
查看次数

如何查看InputStream中的前两个字节?

应该很简单:我有一个InputStream,我想要查看(不读取)前两个字节,即我希望在我偷看后,InputStream的"当前位置"为0.什么是最好最安全的方法?

答案 - 正如我所怀疑的,解决方案是将其包装在提供可标记性的BufferedInputStream中.谢谢Rasmus.

java inputstream bufferedinputstream

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

如何在angularjs中阅读pdf流

我从服务器获得以下PDF流: PDF STREAM

如何在AngularJS中读取此流?我尝试使用以下代码在新窗口中将其作为PDF文件打开:

.success(function(data) {
   window.open("data:application/pdf," + escape(data));
 });
Run Code Online (Sandbox Code Playgroud)

但我无法在打开的窗口中看到内容.

java pdf inputstream angularjs

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