标签: outputstream

你如何模拟输出流?

'输出蒸汽'是指任何接收字节序列或字符或其他内容的对象.所以,java.io.OutputStream,还有java.io.Writer,javax.xml.stream.XMLStreamWriter的writeCharacters方法等等.

我正在为一个类编写基于模拟的测试,该类的主要功能是将数据流写入其中一个(XMLStreamWriter,就像它一样).

问题是数据流是在对write方法的一系列调用中编写的,但重要的不是调用,而是数据.例如,给定XMLStreamWriter out,这些:

out.writeCharacters("Hello, ");
out.writeCharacters("world!");
Run Code Online (Sandbox Code Playgroud)

相当于:

out.writeCharacters("Hello, world!");
Run Code Online (Sandbox Code Playgroud)

这对我的目的来说无关紧要.将会有一些特定的调用序列,但我不在乎它是什么,因此我不想写出对该特定序列的期望.我只是希望能够以任何方式写入某个特定的数据流.

一种选择是切换到基于状态的测试.我可以在缓冲区中累积数据,并对其进行断言.但是因为我正在编写XML,这意味着要做一些相当复杂和丑陋的断言.模拟似乎是处理编写XML的更大问题的更好方法.

那么我如何用模拟做到这一点?

我正在使用Moxie进行模拟,但我很想知道任何模拟库的方法.

java outputstream mocking stream

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

将OutputStream转换为ByteArrayOutputStream

我正在尝试将其转换OutputStreamByteArrayOutput流.我无法找到关于如何做到这一点的任何明确的简单答案.这个问题是在StackOverflow问题的标题中提出的,但问题的主体是如何将a更改ByteArrayStreamOuputStream.我OutputStream已经创建了一个,答案中给出的这个例子将无法编译!

那个问题就在这里

我有一个已经构造的OutputStream,其长度为44字节,称为waveHeader.我想将其转换为ByteArrayOutputStream,因为我希望能够使用waveHeader.ToByteArray()将其更改为byte [],以便在以后的过程中使用;

是否有简单的铸造类型或允许这样的东西?

如果没有那么:

  • 有没有办法在原始OutputStream中构造指向数据的指针,如果无法转换它的话?

  • 如何访问OutputStream中包含的数据?

我是JAVA的新手.这对我来说只是一个爱好.在VisualBasic .net中的流更容易!

java outputstream bytearrayoutputstream wave

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

在android中捕获图像时破坏管道错误

我将捕获一个来自android中的应用程序的图像,但是输出流存在一些问题,并且使用JAVA.IO的BROKEN PIPE出错.我的代码如果在下面.这是写命令功能的问题.我已经从git hub下载了这个演示版,所以请尽快帮助我.非常感谢提前.

void takeScreenshot()
{
    String file ="/data/data/com.koushikdutta.screenshot/screenshot.bmp";;
    OutputStream os = null;
    int screenshotUid;
    String screenshotUser = null;
    Process sh = null;
    try
    {
        try
        {
            sh = Runtime.getRuntime().exec("su -c sh");

            os = sh.getOutputStream();
            Log.e("","THE VALUE OF OBJECT IS:::::"+os.toString());

            // file ="/data/data/com.koushikdutta.screenshot/screenshot.bmp";
            screenshotUid = getUidForPackage("com.koushikdutta.screenshot");
            screenshotUser = getUserForPackage("com.koushikdutta.screenshot");
        }
        catch(Exception e)
        {
            Log.e("","Hi Error created");
        }
        try
        {
            Thread.sleep(2000);
            writeCommand(os, "rm "+file);
            writeCommand(os, "mkdir /sdcard/dcim");

        }
        catch(Exception e)
        {
            Log.e("","Hello How are you??"+e.getMessage());
        }
        writeCommand(os, …
Run Code Online (Sandbox Code Playgroud)

java android outputstream file

14
推荐指数
1
解决办法
1626
查看次数

如何通过setProperty通过代理使用HttpsURLConnection?

网络环境:

Https客户端<=============>代理服务器<==============> Https Server
                                                  192.168.17.11 <----- extranet --- ---> 192.168.17.22
10.100.21.10 <---- intranet -----> 10.100.21.11

ps:没有默认网关的Http客户端,但它可以ping到10.100.21.11

描述:

操作系统:3台主机上的Ubuntu 12.04
Https客户端:用java实现(openjdk-6).有一个网络接口.
代理服务器:Apache2.2.有两个网络接口.
Https服务器:Tomcat6.Have一个网络接口.

我使用两种方法通过代理实现httpsurlconnection :(
为方便起见我没有写下关于ssl句柄函数来检查serverTrustedhostnameVerifier问题.如果需要我会更新.)

1.Proxy类

InetSocketAddress proxyInet = new InetSocketAddress("10.100.21.11",80);
Proxy proxy = new Proxy(Proxy.Type.HTTP, proxyInet);
URL httpsUrl = new URL("https://192.168.17.22:8443/test");
HttpsURLConnection httpsCon = (HttpsURLConnection) httpsUrl.openConnection(proxy);

httpsCon.setDoOutput(true);
httpsCon.setDoInput(true);
httpsCon.setRequestMethod("POST");
OutputStream out = httpsCon.getOutputStream();
OutputStreamWriter owriter = new OutputStreamWriter(out);

owriter.write("<request>test</request>");
owriter.flush();
owriter.close();
...
Run Code Online (Sandbox Code Playgroud)

这种方法可行,我观察到数据包流量也符合我的期望.
HttpClient ---> ProxyServer ---> HttpServer

但是当我使用set Property方法时:

2.setProperty

System.setProperty("http.proxySet", …
Run Code Online (Sandbox Code Playgroud)

java proxy networking outputstream httpsurlconnection

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

如何阅读pdf文件并将其写入outputStream

我需要读取带有文件路径"C:\ file.pdf"的pdf文件并将其写入outputStream.最简单的方法是什么?

@Controller
public class ExportTlocrt {

@Autowired
private PhoneBookService phoneBookSer;

private void setResponseHeaderTlocrtPDF(HttpServletResponse response) {
    response.setContentType("application/pdf");
    response.setHeader("content-disposition", "attachment; filename=Tlocrt.pdf" );
} 

@RequestMapping(value = "/exportTlocrt.html", method = RequestMethod.POST)
public void exportTlocrt(Model model, HttpServletResponse response, HttpServletRequest request){

    setResponseHeaderTlocrtPDF(response);
    File f = new File("C:\\Tlocrt.pdf");

    try {
        OutputStream os = response.getOutputStream();
        byte[] buf = new byte[8192];
        InputStream is = new FileInputStream(f);
        int c = 0;
        while ((c = is.read(buf, 0, buf.length)) > 0) {
            os.write(buf, 0, c);
            os.flush();
        }
        os.close();
        is.close();
    } catch …
Run Code Online (Sandbox Code Playgroud)

java pdf outputstream

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

通过JNI接口共享输出流

我正在编写一个通过JNI接口使用C++库的Java应用程序.C++库创建了类型的对象Foo,这些对象通过JNI传递给Java.

假设库具有输出功能

void Foo::print(std::ostream &os)
Run Code Online (Sandbox Code Playgroud)

我有一个Java OutputStream out.如何Foo::print从Java 调用以便输出显示out?有什么办法来要挟OutputStreamstd::ostream在JNI层?我可以在缓冲区中捕获JNI层的输出,然后将其复制到out

c++ java java-native-interface iostream outputstream

13
推荐指数
2
解决办法
4581
查看次数

在多线程Java程序中,每个线程都有自己的System.out副本吗?

我正在编写一个多线程Java程序,其中每个线程可能需要将其标准输出重定向到单独的文件.每个线程都有自己的文件.可以在"每个线程"的基础上重定向System.out,还是可以跨所有线程更改System.out全局?

java io multithreading outputstream

13
推荐指数
2
解决办法
5598
查看次数

在Android流中使用flush()close()的好处?

我知道一般的想法,但我不确定它是否有影响,因为Android api声明如下:"刷新此流.此方法的实现应确保写出任何缓冲的数据.此实现什么都不做."

这种实现没有任何作用< - 这是否意味着它无用或者我错过了什么?

android inputstream outputstream

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

如何使用DefaultHttpClient写入OutputStream?

我如何OutputStream使用org.apache.http.impl.client.DefaultHttpClient

我想写一个长字符串到输出流.

使用HttpURLConnection你会像这样实现它:

HttpURLConnection connection = (HttpURLConnection)url.openConnection();
OutputStream out = connection.getOutputStream();
Writer wout = new OutputStreamWriter(out);
writeXml(wout);
Run Code Online (Sandbox Code Playgroud)

有没有使用DefaultHttpClient类似于我上面的方法?我如何写一个OutputStream使用DefaultHttpClient而不是HttpURLConnection

例如

DefaultHttpClient client = new DefaultHttpClient();

OutputStream outstream = (get OutputStream somehow)
Writer wout = new OutputStreamWriter(out);
Run Code Online (Sandbox Code Playgroud)

java outputstream httpclient

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

Java Networking:在Socket中解释InputStream和OutputStream

我已经使用创建了一个服务器ServerSocket.之后,我创建了Client Socket,并连接到此服务器.

之后,我使用InputStream执行"一些东西",并从Socket Object获取OutputStream.但是,我真的不太了解inputStream和outputStream.这是我的简单代码:

private Socket sock = null;
private InputStream sockInput = null;
private OutputStream sockOutput = null;

...
            String msg = "Hello World";
            byte[] buffer = null;

            try {
                sockOutput.write(msg.getBytes(), 0, test.length());
                sockOutput.write("Hello StackOverFlow".getBytes(), 0, test.length());
                buffer = new byte[test.length()];
                sockInput.read(buffer, 0, test.length());
                System.out.println(new String(buffer));
                sockInput.read(buffer, 0, test.length());
                System.out.println(new String(buffer));
            } catch (IOException e1) {
                e1.printStackTrace();
                }
Run Code Online (Sandbox Code Playgroud)

结果将是:"Hello World"和"Hello StackOverFlow".

这是服务器端代码:

private int serverPort = 0;
    private ServerSocket serverSock = null;

    public VerySimpleServer(int serverPort) { …
Run Code Online (Sandbox Code Playgroud)

java sockets inputstream outputstream

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