我正在读取我的java代码中的url但是我想要读取的页面在加载时执行命令并且InputStreamReader在完全加载之前读取页面,因此我的缓冲读取器仅在真实内容之前收集页面上的HTML加载.
我的主要目标是在页面上找到"sales"这个词,但如果在加载整个页面之前连接了已打开的流,则无法执行此操作.有没有办法等待它加载或什么?
这是我的代码:
URL url = new URL("http://urlgoeshere.com?"+ withAParam);
URLConnection uc = url.openConnection();
uc.connect();
BufferedReader in = new BufferedReader(new InputStreamReader(uc.getInputStream()));
String inputLine = in.readLine();
int index = -1;
while ((inputLine = in.readLine()) != null){
index=inputLine.toLowerCase().indexOf("sales");
if(index>=0){
log.info("Found sales!");
break;
}
}
if (in != null){
in.close();
}
Run Code Online (Sandbox Code Playgroud) 我的服务器在23999打开一个telnet端口,当我给出时telnet localhost 23999,它显示如下:
< BP-SAS ==> bplin19 !>telnet 0 23999
Trying 0.0.0.0...
Connected to 0.
Escape character is '^]'.
Please enter password to authenticate:
(here i give password for example abc123)
Enter 'help' at any point to get a listing of all registered commands...
BAS> log set-info 1 ( commad i have entered and it does somthing )
Run Code Online (Sandbox Code Playgroud)
现在不是像这样打开,我必须编写执行此操作的java代码.
Socket soc=new Socket("192.168.9.7",23999);
while(true){
//create buffered writer
BufferedReader bwin = new BufferedReader(new InputStreamReader(soc.getInputStream()));
BufferedWriter bw = …Run Code Online (Sandbox Code Playgroud) 我试图从我的原始文件夹中的文本文件"temp.txt"中读取数据,并在单击按钮"按钮"时在文本视图"text"上显示文件的内容,但我的应用程序崩溃时,我很有可能以错误的方式做这件事,因为我是android和java编程的新手.我在这里粘贴代码,任何帮助将不胜感激
案例R.id.b:
InputStream is = getResources().openRawResource(R.raw.temp);
BufferedReader br = new BufferedReader(new InputStreamReader(is));
try {
string = br.readLine();
while(string != null){
st = string;
}
text.setText(st);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
break;
Run Code Online (Sandbox Code Playgroud)
"st"和"string"都是字符串变量.如果有人能指出另一种简单的方法来做同样的事情,我会很高兴的.
关于BufferedReader如何工作的非常基本的问题。给定字符串/短语,我想从其中包含很多文本的文件中查找并打印它。
我在Java中使用BufferedReader对此主题进行了一些研究,这是最接近的结果。虽然不能完全解决我的问题。
因此,有了这些信息,为什么以下代码会终止?
public class MainApp {
String line = null;
String phrase = "eye";
try {
File file = new File("text.txt");
FileReader fr = new FileReader(file);
BufferedReader br = new BufferedReader(fr);
while((line = br.readLine()) != null) {
if (line.equals(phrase) {
System.out.println(line);
}
}
br.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
Run Code Online (Sandbox Code Playgroud)
我对这个区块应如何运作的了解:
为什么我认为它可能 不会 工作:
readlines不会作为字符串存储在BufferedReader中(因此无法进行比较)
错误的逻辑(很可能是if语句)
为了简单起见,让我们假设“ text.txt”充满了非常长的传说ipsum,并且在其中间的某个地方加上了一个“ eye”字。
问题到底在哪里?(如果可能的话,请不要提供完整的代码解决方案,为了练习,我很乐意亲自完成编码工作)。
我有一个叫做的类User和一个名为的文件Users.csv,如下所示:
用户类:
public class User
{
private String name;
private String rg;
private String type;
public String getName()
{
return name;
}
public String getRg()
{
return rg;
}
public String getType()
{
return type;
}
public void setName(String n)
{
name = n;
}
public void setRg(String r)
{
rg = r;
}
public void setType(String t)
{
type = t;
}
}
Run Code Online (Sandbox Code Playgroud)
Users.csv:
a,b,c
d,e,f
as,d,cf
Run Code Online (Sandbox Code Playgroud)
另外,我有一个名为的类test,它实现了一个方法:
考试类:
public class test
{ …Run Code Online (Sandbox Code Playgroud) 我想反击文件的行,在第二遍我想采取每一行并操纵它.它没有编译错误,但它不能进入第二个while ((line = br.readLine()) != null).是否有不同的方法来获取文件的行(电影)并存储在数组中?
BufferedReader br = null;
try { // try to read the file
br = new BufferedReader(new FileReader("movies.txt"));
String line;
int numberOfMovies = 0;
while ((line = br.readLine()) != null) {
numberOfMovies++;
}
Movie[] movies = new Movie[numberOfMovies]; // store in a Movie
// array every movie of
// the file
String title = "";
int id = 0;
int likes = 0;
int icounter = 0; // count to create new movie …Run Code Online (Sandbox Code Playgroud) 当我构造一个新的时,BufferedReader它为我提供了8192个字符的缓冲区。这背后的逻辑/原因是什么?
8192 = 2 to the power of 13
Run Code Online (Sandbox Code Playgroud) 用于从文件中读取字符的这两种方法有什么区别.
第一
FileReader fr = new FileReader( new File( "file.txt") );
int x = 0;
while( ( x = fr.read() ) != -1 ) {
System.out.println( (char) x );
}
Run Code Online (Sandbox Code Playgroud)
第二
BufferedReader bfr = new BufferedReader( new FileReader( new File( "file.txt") ) );
int x = 0;
while( ( x = bfr.read() ) != -1 ) {
System.out.println( (char) x );
}
Run Code Online (Sandbox Code Playgroud)
这两个代码都从文件中读取字符并将其写在控制台上.
哪种方法更有效,为什么? 或者它是一回事?
我正在学习 Java 并从事文件 IO 工作,现在一直停留在从一个文件读取文本并写入另一个文件中。我使用两种不同的方法,第一种方法用于在控制台中从文件#1 读取和显示文本,另一种方法用于在文件#2 中写入。
我可以成功读取并显示 File#1 中的内容,但不确定如何在 file#2 中写入文本。
这是我到目前为止编写的代码:
import java.io.*;
public class ReadnWrite {
public static void readFile() throws IOException {
BufferedReader inputStream = new BufferedReader(new FileReader(
"original.txt"));
String count;
while ((count = inputStream.readLine()) != null) {
System.out.println(count);
}
inputStream.close();
}
public static void writeFile() throws IOException{
BufferedWriter outputStream = new BufferedWriter(new FileWriter(
"numbers.txt"));
//Not sure what comes here
}
public static void main(String[] args) throws IOException {
checkFileExists();
readFile();
}
}
Run Code Online (Sandbox Code Playgroud)
这只是为了我自己的学习,因为有很多例子可以阅读和编写,而无需使用不同的方法,但我想了解如何通过不同的方法来实现。
任何帮助将不胜感激。
问候,
我正在尝试检查文件内容是否为空。我有一个内容为空的源文件。我尝试了不同的选择。但没有什么对我有用。
这是我的代码:
Path in = new Path(source);
/*
* Check if source is empty
*/
BufferedReader br = null;
try {
br = new BufferedReader(new InputStreamReader(fs.open(in)));
} catch (IOException e) {
e.printStackTrace();
}
try {
if (br.readLine().length() == 0) {
/*
* Empty file
*/
System.out.println("In empty");
System.exit(0);
}
else{
System.out.println("not empty");
}
} catch (IOException e) {
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
我试过使用 -
1. br.readLine().length() == 0
2. br.readLine() == null
3. br.readLine().isEmpty()
Run Code Online (Sandbox Code Playgroud)
以上所有内容都不是空的。我需要使用 -
BufferedReader br = null;
try { …Run Code Online (Sandbox Code Playgroud)