我的项目目录结构(在Eclipse中):
MyProject/
src/ --> "source directory" on Eclipse's classpath/buildpath
com.me.myapp
Driver
myconfig.txt
Run Code Online (Sandbox Code Playgroud)
在Driver,我有以下代码:
public class Driver {
public static void main(String[] args) {
InputStream is = ClassLoader.getSystemClassLoader.getResourceAsStream("myconfig.txt");
if(is == null)
System.out.println("input stream is null");
else
System.out.println("input stream is NOT null :-)");
}
}
Run Code Online (Sandbox Code Playgroud)
当我运行这个时,我得到以下控制台输出:
input stream is null
Run Code Online (Sandbox Code Playgroud)
为什么?我是否放置myconfig.txt在错误的位置?我是否错误地使用了ClassLoader API?别的什么?提前致谢!
我正在尝试压缩文件(例如foo.csv)并将其上传到服务器.我有一个工作版本,它创建一个本地副本,然后删除本地副本.我如何压缩文件,以便我可以发送它而无需写入硬盘驱动器并完全在内存中执行?
情况是这样的:
首先,我们在内存中生成一个文件,我们可以得到一个InputStream对象,InputStream对象必须作为电子邮件的附件发送...语言是java,我们使用spring发送电子邮件.
我发现很多,但我找不到如何发送电子邮件附件使用InputStream ...我尝试这样做:
InputStreamSource iss = null;
iss = new InputStreamResource(new FileInputStream("c:\\a.txt"));
MimeMessageHelper message = new MimeMessageHelper(mimeMessage,
true, "UTF-8");
message.addAttachment("attachment", iss);
Run Code Online (Sandbox Code Playgroud)
但我们例外:
传入资源包含一个开放流:无效参数.JavaMail需要一个InputStreamSource,为每个调用创建一个新流.
我正在使用URL类从中读取InputStream.有什么方法可以使用RestTemplate吗?
InputStream input = new URL(url).openStream();
JsonReader reader = new JsonReader(new InputStreamReader(input, StandardCharsets.UTF_8.displayName()));
Run Code Online (Sandbox Code Playgroud)
我如何InputStream 使用RestTemplate而不是使用URL?
使用Java 11,我可以初始化InputStream为:
InputStream inputStream = InputStream.nullInputStream();
Run Code Online (Sandbox Code Playgroud)
但我无法理解
ie 的潜在用例InputStream.nullInputStream或类似的API .OutputStreamOutputStream.nullOutputStream
从API Javadocs,我可以弄清楚它
返回一个新的
InputStream即读取任何字节.返回的流最初是打开的.通过调用close()方法关闭流.后续调用
close()无效.虽然流是开放的,available(),read(),read(byte[]),...skip(long),和transferTo()方法的行为都好像流的末尾已到达.
我进一步详细说明了这些说明:
有很多次我想使用需要作为目标OutputStream/Writer的参数来发送输出的方法,但是想要为其他效果静默执行这些方法.
这相当于Unix将命令输出重定向到/ dev/null,或者在DOS中将命令输出附加到NUL的能力.
然而,我无法理解陈述中声明的那些方法是什么...... 为了其他效果而默默地执行这些方法.(归咎于我没有动手使用API)
有人可以帮助我理解在可能的情况下借助示例获得这样的输入或输出流有什么用处吗?
编辑:我在进一步浏览时可以找到的类似实现之一是apache-commons'NullInputStream,它更好地证明了测试用例的合理性.
在Java中有两个InputStream,有没有办法合并它们,所以你用一个InputStream结束,它给你两个流的输出?怎么样?
是的,我是那么傻.我试图从各种食谱配方中将一些groovy代码粘在一起,我无法从Java/Groovy中的InputStream到BufferedImage.谷歌目前不是我的朋友.
我在文档中找不到对此的澄清.但是当我们有一个Process物体并且打电话时getInputStream(),
当我们完成它时,我们是否会得到一个我们应该明确关闭的新流?或者我们是否得到了与流程相关的流,我们不应该关闭流程,但流程是否会关闭它?
基本上,我们应该如何与我们获得的流进行交互Process.getInputStream()?关闭还是不关闭?
我知道如何获取给定类路径资源的输入流,从输入流读取直到我到达终点,但它看起来像一个非常常见的问题,我想知道是否有一个我不知道的API,或者是一个库会让事情变得如此简单
byte[] data = ResourceUtils.getResourceAsBytes("/assets/myAsset.bin")
Run Code Online (Sandbox Code Playgroud)
要么
byte[] data = StreamUtils.readStreamToEnd(myInputStream)
Run Code Online (Sandbox Code Playgroud)
例如!
我是测试自动化的实习生.我正在使用Eclipse创建Junit代码并使用Eclipse运行.我正在使用FileInputStream函数从excel表中重新获取数据.
FileInputStream fi=new FileInputStream("c:\\search.xls");
Workbook w=Workbook.getWorkbook(fi);
Sheet s=w.getSheet(0);
Run Code Online (Sandbox Code Playgroud)
是否有必要关闭Inputstream功能?如果是这样,请指导我一些编码.
inputstream ×10
java ×10
io ×2
classloader ×1
classpath ×1
eclipse ×1
email ×1
file-io ×1
groovy ×1
java-11 ×1
memory ×1
outputstream ×1
process ×1
resttemplate ×1
spring ×1
zip ×1