有什么方法可以得到一个线程安全的缓冲读卡器.当我运行这段代码时,我得到了以下信息#
Threadid=28 ObjectReference=de.factfinder.resource.Resource@1b7aeb4
Threadid=28 ObjectReference=java.io.InputStream@3d6fb9
Threadid=28 ObjectReference=java.io.InputStreamReader@171e0f6
Threadid=28 ObjectReference=java.io.BufferedReader@1684179
28 started Reading
Threadid=28 ObjectReference=de.factfinder.resource.Resource@1b7aeb4
Threadid=28 ObjectReference=java.io.InputStream@3d6fb9
Threadid=28 ObjectReference=java.io.InputStreamReader@171e0f6
Threadid=28 ObjectReference=java.io.BufferedReader@1684179
28 finished Reading
Threadid=38 ObjectReference=de.factfinder.resource.Resource@1bebf14
Threadid=38 ObjectReference=java.io.InputStream@3d6fb9
Threadid=38 ObjectReference=java.io.InputStreamReader@171e0f6
Threadid=38 ObjectReference=java.io.BufferedReader@1684179
38 started Reading
Threadid=38 ObjectReference=de.factfinder.resource.Resource@1bebf14
Threadid=38 ObjectReference=java.io.InputStream@3d6fb9
Threadid=38 ObjectReference=java.io.InputStreamReader@171e0f6
Threadid=38 ObjectReference=java.io.BufferedReader@1684179
38 finished Reading
Run Code Online (Sandbox Code Playgroud)
缓冲读取器,InputStreamReader和InputStream的哈希码保持不变.为什么?
我正在尝试重用输入法Scanner(System.in)和BufferedReader(FileReader).当用户键入"readfile"作为命令时,程序会将文件中的第一个人(即文件中的第一行)添加到列表中,但是BufferedReader卡在同一行上,因此卡在无限循环中.键盘输入
的Scanner方法就像魅力一样.
class Menu {
public static final int ARRAYINDEXFOREMAIL = 3;
private static final String NEWPERSON = "newperson";
private static final String FROMFILE = "readfile";
public static final String READFILE = "saved.txt";
private Scanner keyboardInput = new Scanner( System.in );
private String name;
private String tlf;
private String[] email;
private String [] stringTmp;
private String in;
private boolean readFromFile = false;
Menu( boolean fileRead ) {
if( fileRead ) {
readFromFile …Run Code Online (Sandbox Code Playgroud) 我用Java编写代码
public void read() throws IOException {
BufferedReader in = new BufferedReader(new InputStreamReader(this.socket.getInputStream(), "UTF8"));
String requestURL = null;
Vector property = new Vector();
String line;
//MORE OF CODE
}
Run Code Online (Sandbox Code Playgroud)
如果您需要完整代码,请粘贴.
我想把它改写成C#
但我不知道哪个等同于BufferReader.我有socket,我想从套接字InputStream读取(使用UTF8)
谢谢.
我试图阅读文本文件的每一行中列出的问题,然后将每一行添加到数组中,以便稍后可以单独调用它们.我几乎肯定可以用Java做,但我不确定如何做到这一点.
我确实弄清楚如何读取整个文本文件并将其全部设置为字符串:
private static String readFile(String pathname) {
String line = null;
try {
BufferedReader reader = new BufferedReader(new FileReader(pathname));
while((line = reader.readLine()) != null){
System.out.println(line);
}
} catch (Exception e) {
e.printStackTrace();
}
return line;
}
Run Code Online (Sandbox Code Playgroud)
虽然它与此没什么关系,但正如我所提到的,这是一个存在问题的文件.如果我得到这个问题的解决方案,我将有另一个文件来解决问题的所有答案,然后我将为该文件做同样的事情.
有谁知道一个不太复杂的方法来做到这一点?如果它必须复杂,那么告诉我.我想要某种类型的示例,而不仅仅是指向不同站点的链接.我不是说我只会接受这个.
感谢您的时间!
PS我已经阅读了关于这个主题的其他问题,但找不到合适的答案和/或示例我正在尝试用Java做什么.
我正试图/usr/bin/perl -e 'for(my $i=0;$i<1000;$i++){print 1x1000;print STDERR 2x1000;}'用我的程序运行(在终端中运行).
ProcessBuilder pb = new ProcessBuilder(go); //go is the command
process = pb.start();
BufferedReader incommandbuf = new BufferedReader(new InputStreamReader(process.getInputStream()),1024*1000);
BufferedReader errcommandbuf = new BufferedReader(new InputStreamReader(process.getErrorStream()),1024*1000);
stdString = "";
while ((line = incommandbuf.readLine()) != null)
{
stdString += line + "\n";
}
String errorstrtemp = "";
while ((line = errcommandbuf.readLine()) != null)
{
errorstrtemp += line + "\n";
}
Run Code Online (Sandbox Code Playgroud)
如果我尝试运行它,它会挂起while ((line = incommandbuf.readLine()) != null).如果我将命令更改为,程序将运行/usr/bin/perl -e 'for(my $i=0;$i<64;$i++){print 1x1000;print STDERR …
try {
String str;
Process process = Runtime.getRuntime().exec("bash /home/abhishek/workspace/Pro/run");
InputStream isout = process.getInputStream();
InputStreamReader isoutr = new InputStreamReader(isout);
BufferedReader brout = new BufferedReader(isoutr);
while ((str = brout.readLine()) != null) {
System.out.println(str);
}
} catch (IOException e) {
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
该代码在从流程获取InputStream方面存在问题,因为如果我从终端运行Shell脚本,则它运行得很好,但是如果我像这样运行脚本,则str始终为null,
我正在使用此代码将Shell脚本的输出直接获取到Java中,而不是在文件中写入脚本输出
还有其他方法可以解决此问题,或者如何使用当前方法解决问题
我正在得到一个日食红色下划线错误
br = new BufferedReader(new FileReader(inFile));
Run Code Online (Sandbox Code Playgroud)
关于"inFile"的一行.这是我想要阅读的对象,我认为它包含我在命令行上给出的命令行文件名/路径.我处理这个错误吗?
import java.io.File;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class Main {
public static void main(String[] args) {
if (0 < args.length) {
File inFile = new File(args[0]);
}
BufferedReader br = null;
try {
String sCurrentLine;
br = new BufferedReader(new FileReader(inFile));
while ((sCurrentLine = br.readLine()) != null) {
System.out.println(sCurrentLine);
}
}
catch (IOException e) {
e.printStackTrace();
}
finally {
try {
if (br != null)br.close();
} catch (IOException ex) {
ex.printStackTrace();
} …Run Code Online (Sandbox Code Playgroud) 我是java新手,我一直在尝试解决一个问题,我觉得答案可能比我的代码更简单.问题是打印任意长度的用户输入名称的首字母以及完整的姓氏.但这有没有任何String.split()或arrays.I尝试让用户一次输入一个单词,但有没有可能的方法立即获取整个名称并按要求执行.我的代码如下:
import java.io.*;
public class Initials {
public static void main(String[]args)throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Enter the number of words your name contains");
int n=Integer.parseInt(br.readLine());
String str="";
for(int x=1;x<=n-1;x++){
System.out.println("Enter your name's word number:"+" "+x);
String s=br.readLine();
String st=s.toUpperCase();
char ch=st.charAt(0);
str=str+ch+".";
}
System.out.println("Enter your surname");
String sur=br.readLine();
str=str+" "+sur.toUpperCase();
System.out.println(str);
}
}
Run Code Online (Sandbox Code Playgroud) 我在java中读取文件时遇到一些问题:我的文件是例如:
3,4
2
6
4
1
7
3
8
9
Run Code Online (Sandbox Code Playgroud)
第一行3和4是数组A和B的长度,然后是每个数组的元素.我做的
import java.io.*;
import java.util.Arrays;
public class Progetto {
public static void main(String args[])
{
// Open the file that is the first
// command line parameter
FileInputStream fstream = new FileInputStream("prova.txt");
BufferedReader br = new BufferedReader(new InputStreamReader(fstream));
String strLine = br.readLine(); // step 1
if (strLine != null) {
String[] delims = strLine.split(","); // step 2
// step 3
int[] a = new int[Integer.parseInt(delims[0])];
int[] b = new int[Integer.parseInt(delims[1])]; …Run Code Online (Sandbox Code Playgroud) 我有一个像文本文件
one
two
three
four
five
Run Code Online (Sandbox Code Playgroud)
我需要获取文件中每一行的偏移量.我如何用Java做到这一点?
我搜索了一些I/O库(如BufferedReader和RandomAccessFile)但我无法找到满意的答案.
任何人都可以建议如何处理这个?
bufferedreader ×10
java ×10
linux ×2
arrays ×1
c# ×1
command-line ×1
file ×1
filereader ×1
offset ×1
runtime ×1
shell ×1
string ×1