标签: inputstream

从 JAR 中的资源文件夹加载属性

我有一个 JAR 文件 Movie Library.jar,其内容如下所示:

在此处输入图片说明

PropertiesUtils 类位于 client.jar(如图所示)中,属性文件位于资源文件夹中的属性文件夹中。

我正在尝试将属性加载为:

String absolutePath = LazyProperties.class.getClass().getResource(filePath).getPath();
File file = new File(absolutePath);
InputStream stream = new FileInputStream(file);
Properties properties = new Properties();
properties.load(stream);
Run Code Online (Sandbox Code Playgroud)

但它显示:

file:\D:\Code\MovieLibrary\build\jar\Movie%20Library.jar!\resources\properties\movie_library.properties (The filename, directory name, or volume label syntax is incorrect)
Run Code Online (Sandbox Code Playgroud)

我无法将其视为System.out.println(file)印刷品:

file:/D:/Code/MovieLibrary/build/jar/Movie%20Library.jar!/resources/properties/movie_library.properties
Run Code Online (Sandbox Code Playgroud)

任何帮助都是可观的。提前致谢。

java io properties inputstream file

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

使用相同的输入流验证和读取

我有一个从 xml 文件中获取输入流的网络服务。现在,我想验证并使用相同的输入流读取它。我使用标记并重置它。

在 Glassfish 和 Websphere 上它工作正常。但是当我使用 openEJB 运行我的集成测试时,流将在验证后关闭。我可以在一个简单的例子中重现它。

我怎样才能更好地意识到它?验证器实现始终相同。但是每个环境都使用输入流的另一种实现。

public class XMLReader {
public static void main(String[] args) {
    try {
        XMLReader reader = new XMLReader();
        InputStream stream = new BufferedInputStream(new FileInputStream(
                new File("myXML.xml")));
        reader.read(stream);
    } catch (Exception e) {
        e.printStackTrace();
    }
}

public void read(InputStream xmlInputStream) throws SAXException,
        IOException {
    if (xmlInputStream.markSupported()) {
        xmlInputStream.mark(0);
        validateXML(xmlInputStream);
        xmlInputStream.reset();
        readXML(xmlInputStream);
    }
}

private void readXML(InputStream xmlInputStream) {
    // READ xmInputStream with STAX, JAXB, etc. whatever

}

private void validateXML(InputStream xmlInputStream) …
Run Code Online (Sandbox Code Playgroud)

java xml validation xsd inputstream

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

FtpClient 检索文件流 [挂起]

我有一个本地 FTP 服务器(使用 FileZilla 服务器创建),并且很少有 XLS 文件。我需要将文件输入流返回到我的 Java 应用程序,以便我可以解析数据等。

为此,我尝试使用 FTPClient,但出于某种原因,在尝试从文件(大于 40KB 或)返回输入流时,FTPClient.retrieveFileStream() 挂起。

我知道有与此类似的问题,我已经阅读了所有内容,至少我能找到的所有内容都已阅读,但没有任何帮助。这真的很烦人,如果可能的话,我想要一些帮助。

相关代码部分:

public FTPwrapper(){

    ConfigurableApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
    Properties props = (Properties) context.getBean("ftp_props");

    this.FTPhost = props.getProperty("host");
    this.FTPuser = props.getProperty("user");
    this.FTPpass = props.getProperty("pass");
    this.FTPport = Integer.parseInt(props.getProperty("port"));
    this.filesPath = props.getProperty("filesPath");
    //start ftp connection
    try {
        client.connect(this.FTPhost, this.FTPport);
        client.login(this.FTPuser, this.FTPpass);
        client.setBufferSize(1024 * 1024);
        client.enterLocalPassiveMode();
        client.setFileType(FTP.BINARY_FILE_TYPE);
    } catch (IOException e) {
       e.printStackTrace();
    } 
}
Run Code Online (Sandbox Code Playgroud)
public InputStream returnFileStream(String FileName){

    InputStream inputstream = null;

    try {
        String remoteFile = this.filesPath+FileName;
        inputstream …
Run Code Online (Sandbox Code Playgroud)

java ftp inputstream

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

如何从java中的字符串中删除Â字符?

我有以下字符串,其中 隐藏了特殊字符。我只想Â从这个字符串中删除~IQBAL~KARACHI¦~~~~~~~~~~~

这是一个前后图像来显示我的意思:

在此处输入图片说明

我试过这个代码:

responseMessageUTF.replaceAll("\\P{InBasic_Latin}", "");
Run Code Online (Sandbox Code Playgroud)

但这也正在取代¦角色。有没有办法只删除Â字符而不删除¦字符?

java string inputstream utf-8

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

Jasper Reports:如何将两个报告流合并为一个 PDF 输出?

我有这段代码,它根据给定的条件一次只生成一个 Jasper 报告到 PDF。但是如果我想将两个 Jaspers 合并成一个 PDF 文件怎么办?(即 PDF 输出应该是 LoadTagR2R.jasper + LoadTagR2RLandscape.jasper —— 这将是一个包含多页的 PDF 输出流)

        if (fullHalfTag.equalsIgnoreCase("Y")){ //Read FULL_HALF_TAG value (if FULL_HALF_TAG == 'Y')
            logger.debug("Printing FULL tag...");
            reportStream = getServletConfig().getServletContext().getResourceAsStream("/reports/LoadTagR2RLandscape.jasper");

        } else {
            logger.debug("Printing HALF tag...");
            reportStream = getServletConfig().getServletContext().getResourceAsStream("/reports/LoadTagR2R.jasper");

        }

        //Report parameters
        Map parameters = new HashMap();
        parameters.put("PLT_NO", pltNo);
        parameters.put("TICKET_NO", ticketNo);

          try {

             Connection conn = ConnectionUtils.getConnection();

             JasperRunManager.runReportToPdfStream(reportStream,servletOutputStream, parameters, conn);
             response.setContentType("application/pdf");

             servletOutputStream.flush();
             servletOutputStream.close();
Run Code Online (Sandbox Code Playgroud)

我尝试合并两个输入流,如下所示,但没有奏效。想法?

        new java.io.SequenceInputStream(s1, s2).
Run Code Online (Sandbox Code Playgroud)

java pdf inputstream jasper-reports

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

创建 BufferedImage 后元数据丢失

我正在使用以下代码在 PNG 图像中写入元数据:

public synchronized static byte[] writeMetaDataInPNGImage(BufferedImage buffImg,
                                                                      String key, String value)

{
    byte[][] image = null;
    try
    {


        ImageWriter writer = ImageIO.getImageWritersByFormatName("png").next();

        ImageWriteParam writeParam = writer.getDefaultWriteParam();
        ImageTypeSpecifier typeSpecifier = ImageTypeSpecifier
            .createFromBufferedImageType(BufferedImage.TYPE_INT_RGB);

        // adding metadata
        IIOMetadata metadata = writer.getDefaultImageMetadata(typeSpecifier, writeParam);

        IIOMetadataNode textEntry = new IIOMetadataNode("tEXtEntry");
        textEntry.setAttribute("keyword", key);
        textEntry.setAttribute("value", value);
        IIOMetadataNode text = new IIOMetadataNode("tEXt");
        text.appendChild(textEntry);

        IIOMetadataNode root = new IIOMetadataNode("javax_imageio_png_1.0");
        root.appendChild(text);
        int width = buffImg.getWidth();
        int height = buffImg.getHeight();
        metadata.mergeTree("javax_imageio_png_1.0", root);



        ByteArrayOutputStream baos = new ByteArrayOutputStream();

        ImageOutputStream stream = …
Run Code Online (Sandbox Code Playgroud)

java bufferedimage metadata inputstream javax.imageio

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

如何将S3ObjectInputStream转换为PushbackInputStream

我正在将一个excel(xls)文件上传到s3,然后另一个应用程序应该从s3下载该文件并使用Apache POI阅读器进行解析.读者接受inputstream类型作为输入,但要正确解析它所期望的excel PushbackInputStream.我从s3下载的文件中获得的输入流是类型的S3ObjectInputStream.我如何转换S3ObjectInputStreamPushbackInputStream

我尝试直接传递S3ObjectInputStream(因为这是一个inputStream)PushbackInputStream,但它导致以下异常:

org.springframework.batch.item.ItemStreamException: Failed to initialize the reader
    at org.springframework.batch.item.support.AbstractItemCountingItemStreamItemReader.open(AbstractItemCountingItemStreamItemReader.java:147)
    at org.springframework.batch.item.support.CompositeItemStream.open(CompositeItemStream.java:96)
.....
.....
Caused by: java.lang.IllegalStateException: InputStream MUST either support mark/reset, or be wrapped as a PushbackInputStream
at org.springframework.batch.item.excel.poi.PoiItemReader.openExcelFile(PoiItemReader.java:82)
.....
Run Code Online (Sandbox Code Playgroud)

我尝试将S3ObjectInputStream转换为PushbackInputStream,但它导致了classcastexception.

java.lang.ClassCastException: com.amazonaws.services.s3.model.S3ObjectInputStream cannot be cast to java.io.PushbackInputStream
Run Code Online (Sandbox Code Playgroud)

任何人都知道解决方案

java excel inputstream amazon-s3 apache-poi

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

为什么一次读取和字节数组比读取一个字节要快?

"一次读取的字节数组是不是每次读一个字节快得多"
我看到这句话,而我是努力学习的输入流.为什么会这样?

java byte inputstream

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

应该显式关闭BufferedReader和InputStreamReader吗?

我想把a的内容读InputStreamString:

private String readToString(InputStream stream) {
    return new BufferedReader(new InputStreamReader(stream))
            .lines().collect(Collectors.joining("\n"));
}
Run Code Online (Sandbox Code Playgroud)

流来自java.lang.Process.

问题:我是否必须明确关闭任何一个InputStream,InputStreamReader或者BufferedReader在这种情况下?

旁注:链接的问题不是重复的,因为我的问题是如何正确关闭流,而不是如何将流读取到字符串!

java inputstream bufferedreader java-8

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

找出InputStream是否关闭

java.io.InputStream在尝试读取a 之前,Java是否有任何可靠的方法来确定a 是否关闭?

我的用例是我有一个接受InputStream参数并从中读取参数的方法。该方法在其自己的线程中运行,如果输入流关闭,我想终止该线程。

InputStreamImplements Closeable,它提供一种close()方法,但显然无法查询实例是否已关闭。

尝试从封闭状态读取InputStream将引发IOException,但可能还有其他原因,并且接口合同中没有任何内容说明这种情况是否永久存在,或者在某些情况下是否有可能在某个时候消失。

我的方法的调用者可以提供所需的任何子类InputStream,因此不能依靠特定的子类行为。

还有其他想法吗?

java inputstream

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