Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Servlet,写入数据_C#_Java_Linux_Servlets_File Io - Fatal编程技术网

C# Servlet,写入数据

C# Servlet,写入数据,c#,java,linux,servlets,file-io,C#,Java,Linux,Servlets,File Io,我有一个servlet,它使用本地主机在本地windows机器上运行。我们已经设法找到了我们在美国的一位同事,他现在正在他们的Linux机器上托管它,所以我们现在可以在模拟现实世界的环境中测试这个程序 然而,我似乎得到了一个错误,我不能调试写现在,因为我的主管已经离开了一天,我没有访问权。我们留下来的前提是我会做一些调查 就在他离开之前,我把范围缩小到了这些代码行 file = File.createTempFile("temp", Long.toString(System.nanoTime()

我有一个servlet,它使用本地主机在本地windows机器上运行。我们已经设法找到了我们在美国的一位同事,他现在正在他们的Linux机器上托管它,所以我们现在可以在模拟现实世界的环境中测试这个程序

然而,我似乎得到了一个错误,我不能调试写现在,因为我的主管已经离开了一天,我没有访问权。我们留下来的前提是我会做一些调查

就在他离开之前,我把范围缩小到了这些代码行

file = File.createTempFile("temp", Long.toString(System.nanoTime()));
             out.print("Managed to make temp file in trst_servlet");
             FileWriter writer = new FileWriter(file);
             ObjectOutputStream oos = xstream.createObjectOutputStream(writer, "ProcessedInformation");
         oos.writeObject(returnedSearchData);
         oos.flush();
         oos.close();

         out.print("object Persisted"); //PROGRAMME MAKES IT TO HERE
         response.setContentLength((int)(file.length()));
         FileInputStream in = new FileInputStream(file);

         OutputStream ops = response.getOutputStream();

         byte[]buf = new byte[1024];
         int count = 0;
         while((count = in.read(buf)) >= 0)
         {
             ops.write(buf, 0, count);
         }
         in.close();
         ops.close();
     }

     catch(IOException ex)
             //EXCEPTION CAUGHT HERE
我想知道,有没有人知道这是否是一个问题,可能是Linux机器上的缓冲区大小,或者写大文件大小,然后尝试将其发送回网络

本质上,这个基于java的servlet将xml写入我的c#程序


谢谢

错误是什么?如果在浏览器中加载URL,是否有效

可能的问题:

  • 考虑到它以前在另一个盒子上工作,现在在一个新盒子上找不到该文件,因为它位于不同的相对位置

  • 在windows机器上工作,但在Linux上不工作?文件路径中是否使用了windows路径分隔符?“path\to\file”而不是“path/to/file”

  • 您没有将内容类型设置为“application/xml”,而C#client出于某种原因拒绝了它。(在浏览器中进行测试)


  • 你能提供一些关于错误的细节吗?在我老板离开之前,我没有时间把错误打印出来,我只知道是其中一行导致了异常,因为我在那里插入了一个快速打印LN,在这组代码执行之前的printlnalso@tom当然,如果没有访问权限,或者至少没有异常的堆栈跟踪,就不能期望您调查任何内容。在没有看到任何内容的情况下,我可能会猜测文件的路径包含\而不是/,这就是为什么会出现异常。但这只是一个胡乱的猜测。好吧,今天已经结束了,我想我没有必要做任何彻底的事情。我只是不知道其中是否有什么东西对你们这些经验丰富的程序员来说是显而易见的,我很容易错过,或者比如说,一些特定于linux的东西,我永远不会忘记。正如我所说,当它被部署为本地主机时,它工作得非常好。为什么要创建一个空的临时文件,然后开始从中读取?补充一点,我目前仅通过浏览器进行测试,当我看到它在那里工作时,我将再次通过我的程序进行测试。只需添加file=file.createTempFile(“temp”,Long.toString(System.nanoTime());这是罚款,因为例外情况不会发生在其他6或7行上。我已经更新了OP以显示这一点。我认为您应该在完成写入操作时添加
    writer.flush()
    writer.close()
    ,以便将数据发送到操作系统。