我几天前在这里发布了同样的问题(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) 我们正在从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) 在尝试解决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字符串?,但我不知道回答这个问题的成语的效率.
看看我的代码,看起来很多行代码和对象都是一个微不足道的问题......
我large_file.txt包含<tag>代表父母,孩子等数据.我的large_file.txt格式不是xml格式.
我想读取large_file.txt100 MB的大小作为一个字符串,然后使用字符串匹配将我的数据作为对象.
有什么帮助吗?
提前致谢
如何在新的类文件中将文件转换为我的代码中的字符串?我现在迷失了,我试图将文件转换为字符串,但是,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?
换句话说,如果我有一个输入文件"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)
但这似乎不起作用。
有没有一种有效的方法来做到这一点?
我有一个以下格式的文件,记录由换行符分隔,但有些记录在其中有换行符,如下所示.我需要获取每条记录并单独处理它们.该文件的大小可能只有几个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.
有没有办法不删除分隔图案?
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.
我有一个图像的网址.现在我想获得该图像的byte [].如何以字节形式获取该图像.
实际上图像是验证码图像.我正在使用decaptcher.com来解决验证密码.要通过API将该验证码图像发送到decaptcher.com,图像应以字节数组形式显示.
这就是为什么我想让url上的图像以字节为单位.
在早些时候看到关于文本文件索引的帖子后,我开始好奇,因为我正在学习使用Haskell(这不太顺利),如果它可以在Haskell中轻松实现相同的目标: 我如何创建Java来自文件内容的字符串?
该课程的目标是读取文件,按字母顺序排列文件中的单词,并显示这些单词出现的行号.
Haskell中的函数是否能够以类似的方式构建?