相关疑难解决方法(0)

Java IO输入流在读取标准输出和外部C程序的标准错误时阻塞

我几天前在这里发布了同样的问题(Java使用输入流读取外部程序的标准输出),我在阅读时遇到了一些块的优点(while(is.read())!= -1)),但我仍然无法解决问题.

在阅读了这个类似问题的答案后,

Java InputStream阻塞读取 (尤其是Guss发布的答案),

我开始相信,如果程序是交互式的,那么使用is.read()!= -1条件循环输入流是不起作用的(即它需要来自用户的多个输入并在后续输入时显示附加输出,并且只有在给出显式退出命令时,程序才会退出).我承认我对多线程知之甚少,但我认为我需要的是一种在需要用户输入时立即暂停输入流线程(stdout,stderr各一个)的机制,并在输入后恢复提供以防止阻止.以下是我当前的代码,该代码在指示的行上遇到了一个块:

EGMProcess egm = new EGMProcess(new String[]{directory + "/egm", "-o",
                "CasinoA", "-v", "VendorA", "-s", "localhost:8080/gls/MessageRobot.action ",
                "-E", "glss_env_cert.pem", "-S", "glss_sig_cert.pem", "-C", "glsc_sig_cert.pem",
                "-d", "config", "-L", "config/log.txt", "-H", "GLSA-SampleHost"}, new String[]{"PATH=${PATH}"}, directory);

    egm.execute();

    BufferedReader stdout = new BufferedReader(new InputStreamReader(egm.getInputStream()));
    BufferedReader stderr = new BufferedReader(new InputStreamReader(egm.getErrorStream()));

    EGMStreamGobbler stdoutprocessor = new EGMStreamGobbler(stdout, egm);
    EGMStreamGobbler stderrprocessor = new EGMStreamGobbler(stderr, egm);

    BufferedWriter stdin = new BufferedWriter(new OutputStreamWriter(egm.getOutputStream()));


    stderrprocessor.run(); //<-- the block occurs here!
    stdoutprocessor.run();


    //EGM/Agent test …
Run Code Online (Sandbox Code Playgroud)

java java-io

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

Java文件未使用换行符写入流

我们正在从Web服务流式传输CSV文件.看来我们在流式传输时丢失了新行字符 - 客户端将文件全部放在一行上.知道我们做错了什么吗?

码:

 public static void writeFile(OutputStream out, File file) throws IOException {
    BufferedReader input = new BufferedReader(new FileReader(file)); //File input stream 
    String line;
    while ((line = input.readLine()) != null) { //Read file
        out.write(line.getBytes());  //Write to output stream 
        out.flush();
    }
    input.close();
} 
Run Code Online (Sandbox Code Playgroud)

java streaming web-services file

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

最有效的习惯用法只从文件中读取一个整数?

在尝试解决Facebook的拼图"Hoppity Hop"时,http: //www.facebook.com/careers/puzzles.php?puzzle_id = 7,我只从一个文件中读取一个整数.我想知道这是否是最有效的机制呢?

private static int readSoleInteger(String path) throws IOException {
    BufferedReader buffer = null;
    int integer = 0;

    try {
        String integerAsString = null;

        buffer = new BufferedReader(new FileReader(path));

        // Read the first line only.
        integerAsString = buffer.readLine();

        // Remove any surplus whitespace.
        integerAsString = integerAsString.trim();

        integer = Integer.parseInt(integerAsString);
    } finally {
        buffer.close();
    }

    return integer;
}
Run Code Online (Sandbox Code Playgroud)

我看过如何从文件内容创建Java字符串?,但我不知道回答这个问题的成语的效率.

看看我的代码,看起来很多行代码和对象都是一个微不足道的问题......

java io performance file

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

如何读取非常大的文件,即100MB作为字符串

large_file.txt包含<tag>代表父母,孩子等数据.我的large_file.txt格式不是xml格式.

我想读取large_file.txt100 MB的大小作为一个字符串,然后使用字符串匹配将我的数据作为对象.

有什么帮助吗?

提前致谢

java regex

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

将文件转换为字符串

如何在新的类文件中将文件转换为我的代码中的字符串?我现在迷失了,我试图将文件转换为字符串,但是,eclipse一直说它不存在,并且它不会起作用.这是我的代码.

package Mover;
import java.io.*;

 public class Mover {


    public static void main(String[] args) throws IOException, InterruptedException {   

        String desktop = FindDesktop.getCurrentUserDesktopPath();
        String usb = new File(".").getAbsolutePath();
        File TS3S = new File(usb + "/Teamspeak 3");
        File TS3D = new File(desktop + "/TS3");
        File MinecraftLauncherS = new File(usb + "/Minecraft");
        File MinecraftLauncherD = new File(desktop);
        File ShortcutS = new File(usb + "/Shortcuts");
        File ShortcutD = new File(desktop);
        File FrapsS = new File(usb + "/Fraps");
        File FrapsD = new File(desktop + "/Fraps"); …
Run Code Online (Sandbox Code Playgroud)

java string class file

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

如何将整个输入文件转换为字符串?

在 Java 中,如何将整个输入文件转换为一个String

换句话说,如果我有一个输入文件"test.in"

c++
java
python
test
Run Code Online (Sandbox Code Playgroud)

然后我想创建一个String包含"c++javapythontest".

我想到了一些类似的东西

Scanner input = new Scanner(new File("test.in"));
while(input.hasNext()){
    String test = test + input.nextLine();
}
Run Code Online (Sandbox Code Playgroud)

但这似乎不起作用。
有没有一种有效的方法来做到这一点?

java

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

如何使用Java将文件分解为基于正则表达式的标记

我有一个以下格式的文件,记录由换行符分隔,但有些记录在其中有换行符,如下所示.我需要获取每条记录并单独处理它们.该文件的大小可能只有几个Mb.

 <?aaaaa>
 <?bbbb
     bb>
 <?cccccc>
Run Code Online (Sandbox Code Playgroud)

我有代码:

 FileInputStream fs = new FileInputStream(FILE_PATH_NAME);
 Scanner scanner = new Scanner(fs);
 scanner.useDelimiter(Pattern.compile("<\\?"));
 if (scanner.hasNext()) {
     String line = scanner.next();
     System.out.println(line);
 } 
 scanner.close();
Run Code Online (Sandbox Code Playgroud)

但我得到的结果有开头<\?删除:

aaaaa>
bbbb
   bb>
cccccc>
Run Code Online (Sandbox Code Playgroud)

我知道Scanner会消耗任何与分隔符模式匹配的输入.我能想到的只是将分隔符模式添加回每个记录中的mannully.

有没有办法不删除分隔图案?

java regex java.util.scanner

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

Parse .txt to .csv

Is it possible to create a Java program which recognizes the text in a .txt file and write it in a .csv file? If yes,how would you start with such a problem?

My .txt file is Text1 |Text 2 so I could somehow get the char "|" and split it into two cells.

java csv parsing

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

如何在java中抓取Image的byte []?

我有一个图像的网址.现在我想获得该图像的byte [].如何以字节形式获取该图像.

实际上图像是验证码图像.我正在使用decaptcher.com来解决验证密码.要通过API将该验证码图像发送到decaptcher.com,图像应以字节数组形式显示.

这就是为什么我想让url上的图像以字节为单位.

java url image

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

Haskell完整的文本文件索引器

在早些时候看到关于文本文件索引的帖子后,我开始好奇,因为我正在学习使用Haskell(这不太顺利),如果它可以在Haskell中轻松实现相同的目标: 我如何创建Java来自文件内容的字符串?

该课程的目标是读取文件,按字母顺序排列文件中的单词,并显示这些单词出现的行号.

Haskell中的函数是否能够以类似的方式构建?

java recursion haskell

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