标签: bufferedreader

随机化用Java读取的文本文件

我试图用Java读取一个文本文件,基本上是一组问题.有四个选择和一个答案.结构如下所示:

选项a

选项b

选项c

选项d

回答

我这样读它没有问题:

public class rar{
public static String[] q=new String[50];
public static String[] a=new String[50];
public static String[] b=new String[50];
public static String[] c=new String[50];
public static String[] d=new String[50];
public static char[] ans=new char[50];
public static Scanner sr= new Scanner(System.in);


public static void main(String args[]){
int score=0;
try {
             FileReader fr;
      fr = new FileReader (new File("F:\\questions.txt"));
      BufferedReader br = new BufferedReader (fr);
int ar=0;
      for(ar=0;ar<2;ar++){
      q[ar]=br.readLine();
      a[ar]=br.readLine();
      b[ar]=br.readLine();
      c[ar]=br.readLine();
      d[ar]=br.readLine();
    String tempo=br.readLine(); …
Run Code Online (Sandbox Code Playgroud)

java text-files bufferedreader

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

如何从Java中的BufferedReader对象中提取整个内容的最佳方法是什么?

我试图通过URLConnection获取整个WebPage.

最有效的方法是什么?

我已经这样做了:

URL url = new URL("http://www.google.com/");
URLConnection connection;
connection = url.openConnection();
InputStream in = connection.getInputStream();        
BufferedReader bf = new BufferedReader(new InputStreamReader(in));
StringBuffer html = new StringBuffer();
String line = bf.readLine();
while(line!=null){
    html.append(line);
    line = bf.readLine();
}
bf.close();
Run Code Online (Sandbox Code Playgroud)

html包含整个HTML页面.

java performance bufferedreader

6
推荐指数
2
解决办法
2933
查看次数

错误使用BufferedReader

s=new Scanner(new BufferedReader(new InputStreamReader(this.clientSocket.getInputStream())));

        while(s.hasNext()){
             System.out.println("Am intrat in bucla s:");
             longitude=Integer.parseInt(s.next());
             System.out.println("Valoare longitudine:"+longitude);
             latitude=Integer.parseInt(s.next());
             System.out.println(latitude);
Run Code Online (Sandbox Code Playgroud)

我正在使用上面的行从客户端 - 服务器连接读取一些数据;这是服务器端.数据在扫描仪中读取,之后我尝试显示它,但是当我查看logcat时我什么都没有显示但是这个例外:

04-18 00:07:56.138:INFO/global(295):BufferedReader构造函数中使用的默认缓冲区大小.如果需要8k-char缓冲区,最好是明确的.

我的客户端和服务器都在android上!有谁知道我做错了什么?

这是我如何读取数据,我发送纬度和经度,我假设是空格分隔,奇怪的是有时候工作:

        Cursor c=db.getAllData();

           if(c.moveToFirst()) 
             {
              do{

                  longitude=Integer.parseInt(c.getString(1));
                  out.println(longitude);
                  latitude=Integer.parseInt(c.getString(2));
                  out.println(latitude);

              }while(c.moveToNext());

             }
Run Code Online (Sandbox Code Playgroud)

sockets client android bufferedreader

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

是否有一个类在Java中公开了一个无缓冲的readLine方法?

我正在清理工作中的一些代码库,其中一个较旧的类用于读写数据.该数据是US-ASCII编码的字符串和二进制编码的基元的混合.

当前实现使用DataInputStream,但正如您在文档中看到的那样,该readLine()方法已被弃用,因为与将字节转换为字符有关的问题.虽然这个编码问题并没有真正为我们提供,但是弃用是一个问题,因为它已经无法在某些版本的OpenJDK 7上运行,并且弃用意味着它可以在将来完全删除."官方"的另一种方法是使用readLineBufferedReader中,但我们不能做一个完整的换出与DataInputStream所自的BufferedReader不能真正处理的二进制编码的原语.

"混合"这两个类的问题是,当BufferedReader缓冲流时,它会使流标记前进.这意味着对readDouble()来自DataInputStream的方法的后续调用将因IOExceptions或EOFExceptions而失败,因为流标记的实际位置不是"应该"在应用程序逻辑的上下文中的位置.

我查看了某种hacky mark()/ reset()策略,但有时流是由FileInputStream支持的,它不支持mark()/ reset().

除了改变我们的数据协议以将原语写成字符或编写我自己的实现readLine()(这是令人惊讶的非平凡),有没有办法实现这一点?此时我甚至愿意考虑使用外部库.

java io readline bufferedreader datainputstream

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

读取任何有奇怪编码的文本文件?

我有一个带有奇怪编码"UCS-2 Little Endian"的文本文件,我想用Java读取它的内容.

使用NotePad ++打开文本文件

正如您在上面的屏幕截图中看到的那样,文件内容在Notepad ++中显得很好,但是当我使用此代码读取它时,只是在控制台中打印垃圾:

String textFilePath = "c:\strange_file_encoding.txt"
BufferedReader reader = new BufferedReader( new InputStreamReader( new FileInputStream( filePath ), "UTF8" ) );
String line = "";

while ( ( line = reader.readLine() ) != null ) {
    System.out.println( line );  // Prints garbage characters 
}
Run Code Online (Sandbox Code Playgroud)

重点是用户选择要读取的文件,因此它可以是任何编码,并且因为我无法检测文件编码,所以我使用"UTF8"对其进行解码,但如上例所示,它无法正确读取.

有没有以正确的方式阅读这些奇怪的文件?或者至少可以检测出我的代码是否无法正确读取它?

java text-files fileinputstream bufferedreader

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

如何两次或多次读取BufferedReader?

我有一个文本文件,每行一个整数 -

10
20
50
Run Code Online (Sandbox Code Playgroud)

我想阅读和打印这些数字两次甚至多次.我尝试了一些代码而失败了.如何更改代码以打印列表两次?

import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.InputStreamReader;

public class DoubleBuffer {

    public static void main(String[] args) {

        try {

            FileInputStream fstream = new FileInputStream("c:/files/numbers.txt");

            BufferedReader br = new BufferedReader(new InputStreamReader(fstream));
            String strLine;

                // Read rows
                while ((strLine = br.readLine()) != null) {
                    System.out.println(strLine);
                }   

                // Read rows again
                while ((strLine = br.readLine()) != null) {
                    System.out.println(strLine);
                }

            in.close();
        } catch (Exception e) {
            System.err.println("Error: " + e.getMessage());
        }//try-catch

    }// main

}// class
Run Code Online (Sandbox Code Playgroud)

java io inputstream bufferedreader

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

然后BufferedReader写入txt文件?

是否可以使用BufferedReader从文本文件中读取,然后在缓冲读取器读取时,同时它还使用PrintWriter将读取的行存储到另一个txt文件中?

java io file bufferedreader printwriter

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

在java中连续地通过套接字传输数据

我想通过推送和拉动异步发送/接收从一个端点到另一个端点(peer2peer)的连续数据流

因此,为了首先解决通信,我开始使用jax-ws soap绑定webservice,因为它有一个端点和推送机制的ws-addressing,但它似乎是很多开销(根据文档很重,因为不熟悉ws-*,我没有实现它,因为我需要多个客户端稍后监听流,并且流是24/7我想要线程可管理的套接字).

然后我拿了jax-rs但它不包含ws-addressing.(jax-rs 2.0)我也查看了websockets但它需要一个app服务器但是我想要一个jvm可支持的代码

所以,现在我正在尝试使用基本套接字,但我遇到的问题是通过服务器上的套接字流式传输数据,客户端不断接收它.这是第一次阅读,但没有进一步.其次,我怎样才能使它异步?

public class sSocket {  
public static void main(String args[]) throws IOException{  
    int i = 15000;
    ServerSocket ss;
    Socket socket = null;
    ss = new ServerSocket(i);        
    try
    {
        socket = ss.accept();
        socket.setKeepAlive(true);          

           int iii = 0;            
               System.out.println("New connection accepted " +  socket.getInetAddress() + ":" + socket.getPort());   
               BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream()));
               BufferedWriter output = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));

           while(iii<9)
           {
               Thread.sleep(2000);
               output.write("good" + iii + "\n");
               //System.out.print(input.readLine().toString());
               output.flush();
               iii++;
           }
               //socket.close();
       }        

    catch(IOException e)
    { …
Run Code Online (Sandbox Code Playgroud)

java sockets bufferedreader

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

如何使用Java从Hadoop读取偏移量的文件

问题:我想从HDFS读取文件的一部分并将其返回,例如从1000行的文件中返回101-120行.

我不想使用,seek因为我读过它很贵.

我有日志文件,我使用PIG处理成有意义的数据集.我一直在编写一个API来返回数据以供前端消费和显示.这些经过处理的数据集可以足够大,我不想在一个啜食中读出Hadoop中的整个文件,以节省线路时间和带宽.(比方说5 - 10MB)

目前我使用a BufferedReader来返回工作正常的小摘要文件

ArrayList lines = new ArrayList();
...
for (FileStatus item: items) {
    // ignoring files like _SUCCESS
    if(item.getPath().getName().startsWith("_")) {
        continue;
    }           

    in = fs.open(item.getPath());
    BufferedReader br = new BufferedReader(new InputStreamReader(in));

    String line;
    line = br.readLine();
    while (line != null) {
        line = line.replaceAll("(\\r|\\n)", "");
        lines.add(line.split("\t"));
        line = br.readLine();
    }
}
Run Code Online (Sandbox Code Playgroud)

我在网上搜索了很多和Stack一样,但还没找到我需要的东西.

也许这完全是错误的做法,我需要一套完全独立的代码和不同的功能来管理它.对任何建议开放.

谢谢!

正如基于以下讨论的研究所补充的那样: Hadoop过程如何记录跨越块边界的记录? Hadoop FileSplit阅读

java iteration hadoop offset bufferedreader

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

Parquet Writer到缓冲区或字节流

我有一个Java应用程序,已将json消息转换为拼花格式。是否有任何实木复合地板作家在Java中写入缓冲区或字节流?我看到的大多数示例仅适用于文件。

java bufferedreader parquet

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