请查看以下代码
import java.io.*;
public class CSVConverter
{
private File csvFile;
private BufferedReader reader;
private StringBuffer strBuffer;
private BufferedWriter writer;
int startNumber = 0;
private String strString[];
public CSVConverter(String location, int startNumber)
{
csvFile = new File(location);
strBuffer = new StringBuffer("");
this.startNumber = startNumber;
//Read
try
{
reader = new BufferedReader(new FileReader(csvFile));
String line = "";
while((line=reader.readLine())!=null)
{
String[] array = line.split(",");
String inputQuery = "insertQuery["+startNumber+"] = \"insert into WordList_Table ('Engl','Port','EnglishH','PortugueseH','Numbe','NumberOf','NumberOfTime','NumberOfTimesPor')values('"+array[0]+"','"+array[2]+"','"+array[1]+"','"+array[3]+"',0,0,0,0)\"";
strBuffer.append(inputQuery+";"+"\r\n");
startNumber++;
}
}
catch(Exception e)
{
e.printStackTrace();
}
System.out.println(strBuffer.toString()); …Run Code Online (Sandbox Code Playgroud) 我知道bufio包中golang的特定功能.
func (b *Reader) Peek(n int) ([]byte, error)
Run Code Online (Sandbox Code Playgroud)
Peek返回接下来的n个字节而不推进读者.字节在下次读取调用时停止有效.如果Peek返回少于n个字节,它也会返回一个错误,解释为什么读取很短.如果n大于b的缓冲区大小,则错误为ErrBufferFull.
我需要能够从读取器读取特定数量的字节,这将推动读者.基本上,与上面的功能相同,但它推动了读者.有人知道怎么做到这一点吗?
以下两种缓冲方法之间有什么不同(如果有的话)?
Reader r1 = new BufferedReader(new InputStreamReader(in, "UTF-8"), bufferSize);
Reader r2 = new InputStreamReader(new BufferedInputStream(in, bufferSize), "UTF-8");
Run Code Online (Sandbox Code Playgroud) 所以我刚开始使用Kotlin for Android,并将我的Android Java代码转换为Kotlin.
在其中一次转换中,我偶然发现了一个BufferedReader,我通常用Java编写如下:
String result = "";
String line = "";
BufferedReader reader = new BufferedReader(someStream);
while ( (line = reader.readLine()) != null ) {
result += line;
}
Run Code Online (Sandbox Code Playgroud)
但是在Kotlin中,似乎Kotlin不允许我在条件的同时为变量赋值.
目前,我已经编写了如下代码:
val reader = BufferedReader(someStream)
var line : String? = ""
while (line != null) {
line = reader.readLine()
result += line
}
Run Code Online (Sandbox Code Playgroud)
尽管使用了Kotlin,但我并不觉得这么优雅而且感觉很流行.
在Kotlin中使用BufferedReader的最佳方法是什么?
我怎样才能读取所有一中BufferedReader的线,并存储为一个字符串?
val br = new BufferedReader(...)
val str: String = getAllLines(br) // getAllLines() -- is where I need help
Run Code Online (Sandbox Code Playgroud)
与此问题类似.
构造函数中缓冲区大小的含义是什么?
BufferedReader(Reader in, int size)
Run Code Online (Sandbox Code Playgroud)
正如我写的程序:
import java.io.*;
class bufferedReaderEx{
public static void main(String args[]){
InputStreamReader isr = null;
BufferedReader br = null;
try{
isr = new InputStreamReader(System.in);
// System.out.println("Write data: ");
// int i = isr.read();
// System.out.println("Data read is: " + i);
//Thus the InputStreamReader is useful for reading the character from the stream
System.out.println("Enter the data to be read by the bufferedReader: ");
//here isr is containing the lnefeed already so this is needed to be flushed. …Run Code Online (Sandbox Code Playgroud) 我使用BufferedReader的readLine()方法从套接字读取文本行.
没有明显的方法来限制读取行的长度.
我担心数据源可能(恶意地或错误地)写入大量数据而没有任何换行符,这将导致BufferedReader分配无限量的内存.
有没有办法避免这种情况?或者我必须实现readLine()自己的有界版本?
如何从标准文件对象(如sys.stdin)或从"打开"获得的内容中创建BufferedReader对象?
(背景:我需要一个peek()方法,标准文件对象失败了.任何解决这个问题的建议也是受欢迎的.)
我有点期待这个工作,但它没有:
>>> import sys
>>> import io
>>> io.BufferedReader(sys.stdin)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'file' object has no attribute 'readable'
Run Code Online (Sandbox Code Playgroud)
(这是Python 2.7)
哈,得到它,至少对于任何有文件描述符的东西.
stream = sys.stdin, or open(...), etc.
reader = io.open(stream.fileno(), mode='rb', closefd=False)
Run Code Online (Sandbox Code Playgroud) 我想知道有什么mark()和reset()方法BufferedReader?我该如何使用它们?我读过Javadoc,但作为初学者,我无法理解它.
目前我有以下代码供阅读InputStream.我将整个文件存储到StringBuilder变量中,然后处理该字符串.
public static String getContentFromInputStream(InputStream inputStream)
// public static String getContentFromInputStream(InputStream inputStream,
// int maxLineSize, int maxFileSize)
{
StringBuilder stringBuilder = new StringBuilder();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
String lineSeparator = System.getProperty("line.separator");
String fileLine;
boolean firstLine = true;
try {
// Expect some function which checks for line size limit.
// eg: reading character by character to an char array and checking for
// linesize in a loop until line feed is encountered.
// if …Run Code Online (Sandbox Code Playgroud)