我需要从一个"取消读取"字符InputStreamReader.为此目的,我想用mark和reset,但markSupported返回false的InputStreamReader类,因为它没有保持字符的内部缓冲和/或队列.
我知道BufferedInputStream和PushbackInputStream,但由于它们缓冲字节的基础上,同时也不是适当的在这里我需要的字符.
Java是否提供可以解读字符的缓冲字符阅读器?实际上,让我进一步限制,我只需要取消读取单个字符(用于超前目的).我真的需要保持自己的前瞻性吗?
我正在尝试构建一个应用程序来检测来自网页的广告图像.一旦我发现了那些,我就不会允许那些在客户端显示.
基本上我使用反向传播算法来训练神经网络使用这里给出的数据集:http://archive.ics.uci.edu/ml/datasets/Internet+Advertisements.
但是在那个数据集中没有.属性非常高.事实上,该项目的一位导师告诉我,如果你训练具有许多属性的神经网络,那么需要花费大量的时间来接受训练.那么有没有办法优化输入数据集?或者我只需要使用那么多属性?
我使用以下代码(来自蓝牙聊天示例应用程序)来读取传入的数据并从读取的字节中构造一个字符串.我想阅读,直到这个字符串到达<!MSG>.如何使用read()函数插入此条件?
整个字符串看起来像这样<MSG><N>xxx<!N><V>yyy<!V><!MSG>.但read()函数不会立即读取整个字符串.当我显示字符时,我看不到同一行中的所有字符.看起来像:
发件人: <MS
发件人: G><N>xx
发件人: x<V
.
.
.
我在手机上显示字符(HTC Desire),然后使用windows hyperterminal发送数据.
如何确保所有字符都显示在一行?我曾尝试使用StringBuilder和StringBuffer而不是新的String()但问题是read()函数没有读取所有发送的字符.输入流的长度(字节)不等于发送的字符串的实际长度.从读取字节构造字符串正好发生.
感谢您对此提出的任何建议和时间.另外,如果有的话,请随时提出其他错误或更好的做法.
干杯,
马杜
public void run() {
Log.i(TAG, "BEGIN mConnectedThread");
//Writer writer = new StringWriter();
byte[] buffer = new byte[1024];
int bytes;
//String end = "<!MSG>";
//byte compare = new Byte(Byte.parseByte(end));
// Keep listening to the InputStream while connected
while (true) {
try {
//boolean result = buffer.equals(compare);
//while(true) {
// Read from the InputStream
bytes = mmInStream.read(buffer);
//Reader reader = …Run Code Online (Sandbox Code Playgroud) 我想复制InputStream的"开始"(即前N个字符),然后将流重置为其开始,以便可以重用它.
使用mark()和reset()不适用于所有类型的输入流,所以我想知道是否有一个"通用"开源Java类(即流包装器)可以为任何类型的输入流执行此操作.
另外,制作副本以避免转换错误的最安全方法是什么?
我注意到,当我尝试阅读更多信息然后被发送到我的服务器时,Web浏览器将冻结.我看到我的套接字冻结,因为网络浏览器返回的信息较少,然后它正在尝试阅读.有没有办法在Currtly上设置一个时间我正在使用输入流
public String ReadLine()
{
String out;
out="";
// read in one line
try{
request = new StringBuffer(1000);
boolean f=true;
while(true)
{
int c=in.read();
if (c=='\r')
{
// next should be a \n
// Program freezed hear
c=in.read();
if (f==true)
return "";
break;
}
f=false;
out=out+(char)c;
request.append((char)c);
} // end while
} catch(IOException ec)
{
System.out.println(ec.getMessage());
}
System.out.println(request);
return out;
}
Run Code Online (Sandbox Code Playgroud) 我通过套接字发送一个字节数组,我通过DataInputStream接收它.我不知道字节数组的大小,也没办法检查.我试过这样做:
byte[] content = new byte[ARRAY_SIZE];
int something;
while((something = inFromStream.read()) > 0)
output.write(something);
Run Code Online (Sandbox Code Playgroud)
但是,这仍然意味着我需要知道字节数组的大小.我不想只填写一个巨大的数字(因为从流中接收的字节数组可能是100或甚至5000000000).我该如何处理(最好使用标准的Java API /库)?
我现在遇到一个有趣的问题.
我正在尝试在java中读取此文件,其中包含按字母顺序排列的1000个最常见的英语单词:
http://www.file-upload.net/download-6679295/basicVocabulary.txt.html
这是文件开头的片段:
a
able
about
above
according
account
across
act
action
added
afraid
after
Run Code Online (Sandbox Code Playgroud)
我现在的问题是,虽然看起来我正在正确读取txt文件,但我的结果集/结果列表中稍后会丢失第一行.在这种情况下,这是字母"a",因为它位于第一个位置.
为了使您能够重现我的问题,请使用上面的txt文件尝试此示例代码并亲自查看(不要忘记更新文件路径).我在评论中添加了控制台输出.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
public class MyWrongBehaviour {
public static void main(String[] args){
MyWrongBehaviour wrong = new MyWrongBehaviour();
List<String> list = wrong.loadLanguageFile();
System.out.println("size of the list: " + list.size()); //Answer is 1000, that's the correct size
for(String s : list){
System.out.println(s); // "a" will appear, so it is somehow included …Run Code Online (Sandbox Code Playgroud) 我有一个app.exe应用程序要求输入输入路径字符串,一旦我输入,它会询问输出路径字符串...现在当我输入时,app.exe执行一些操作
我需要从我的窗体应用程序传递这些路径我看到很多这样的问题但是无法实现我需要的东西,因为我从未使用过程和Stream Reader或Writer任何帮助请...示例将被感谢...谢谢您..
string input = @"C:\Documents and Settings\pankaj\Desktop\My File\greetingsfreinds.ppt";
string output = @"C:\Documents and Settings\pankaj\Desktop\test";
Process process = new Process();
process.StartInfo.FileName = @"C:\Program Files\Wondershare\MyApp\app.exe";
process.StartInfo.UseShellExecute = false;
process.StartInfo.CreateNoWindow = false;
process.StartInfo.RedirectStandardInput = true;
process.Start();
process.WaitForExit(3000);
process.Close();
Run Code Online (Sandbox Code Playgroud)
好吧,我试过,但它给了一些例外 StandardOut没有重定向或过程还没有开始 ......我的代码是
string input = @"C:\Documents and Settings\pankaj\Desktop\My File\greetingsfreinds.ppt";
string output = @"C:\Documents and Settings\pankaj\Desktop\test";
Process process = new Process();
process.StartInfo.FileName = @"C:\Program Files\Wondershare\MyApp\app.exe";
process.StartInfo.UseShellExecute = false;
process.StartInfo.CreateNoWindow = false;
process.StartInfo.RedirectStandardInput = true;
process.StartInfo.Arguments = input + ";" …Run Code Online (Sandbox Code Playgroud) 我正在努力解决以下问题.
问题:输入包含块数n(1≤n≤20)和由空格分隔的块w1,...,wn(整数,1≤wi≤100000)的权重.输入应该来自用户.
请找到我的代码:
public static void main(String[] args) {
int b1 = 0;
Scanner in = new Scanner(System.in);
System.out.println("Enter no. of blocks: ");
b1 = in.nextInt();
if (b1<=20) {
in.nextLine();
int[] arr = new int[b1];
for (int i=0; i<b1; i++) {
System.out.println("Enter a weights of ths blocks: ");
if (arr[i]<=100000) {
arr[i] = in.nextInt();
}
}
}
Run Code Online (Sandbox Code Playgroud)
我不认为这是正确的方式因为输入应该用空格分隔..
我正在考虑如何进行,但无法提出任何解决方案.你可以帮我解决这个问题.谢谢.
我正在向正确传递的服务器发送消息.
但是,当试图读取结果时,我得到一个例外Socket is closed.
知道如何关闭套接字的输出流同时保持套接字和套接字的输入流打开以获得结果吗?
客户代码:
Socket socket = new Socket("localhost", 9090);
String message = "Some message";
new OutputStreamWriter(socket.getOutputStream(), Charsets.UTF_8)
.append(message)
.close();
// The following line throws the exception when socket.getInputStream() is called:
String fromServer = CharStreams.toString(new InputStreamReader(socket.getInputStream(), Charsets.UTF_8));
Run Code Online (Sandbox Code Playgroud)
例外:
java.net.SocketException: Socket is closed
at java.net.Socket.getInputStream(Socket.java:903)
at alik.server.test.Client.pingServer(Client.java:24)
Run Code Online (Sandbox Code Playgroud)