发布网友 发布时间:2022-04-23 23:07
共5个回答
热心网友 时间:2022-04-27 19:12
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.io.Reader;
public class H {
/**
* 功能:Java读取txt文件的内容
* 步骤:1:先获得文件句柄
* 2:获得文件句柄当做是输入一个字节码流,需要对这个输入流进行读取
* 3:读取到输入流后,需要读取生成字节流
* 4:一行一行的输出。readline()。
* 备注:需要考虑的是异常情况
* @param filePath
*/
public static void readTxtFile(String filePath){
try {
String encoding="GBK";
File file=new File(filePath);
if(file.isFile() && file.exists()){ //判断文件是否存在
InputStreamReader read = new InputStreamReader(
new FileInputStream(file),encoding);//考虑到编码格式
BufferedReader bufferedReader = new BufferedReader(read);
String lineTxt = null;
while((lineTxt = bufferedReader.readLine()) != null){
System.out.println(lineTxt);
}
read.close();
}else{
System.out.println("找不到指定的文件");
}
} catch (Exception e) {
System.out.println("读取文件内容出错");
e.printStackTrace();
}
}
public static void main(String argv[]){
String filePath = "L:\\20121012.txt";
// "res/";
readTxtFile(filePath);
}
}
热心网友 时间:2022-04-27 20:30
area是不是一个文本框?你每次setText当然会清空所有内容,所以到最后留下的只有最后一行。你应该把文件内容读到一个数组里,数组长度1024就可以。然后把数组的内容set到area里面追问对,能告诉一下我代码应该怎么弄吗?
追答字节流字符流都可以,就是往数组里面读,字节流就算文件超过1k也没关系的。忘记你写的是readLine了,既然是一行一行读,你不如直接放StringBuffer里,让他变成一个很长的字符串。不过文件如果太大还是读字节数组吧,毕竟你要是读一本三国演义出来,那字符串得多长啊
热心网友 时间:2022-04-27 22:04
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
public class ReadFile {
public static void main(String[] args) throws IOException {
String fileContent = readFileContent("");
System.out.println(fileContent);
}
//参数string为你的文件名
private static String readFileContent(String fileName) throws IOException {
File file = new File(fileName);
BufferedReader bf = new BufferedReader(new FileReader(file));
String content = "";
StringBuilder sb = new StringBuilder();
while(content != null){
content = bf.readLine();
if(content == null){
break;
}
sb.append(content.trim());
}
bf.close();
return sb.toString();
}
}
求采纳为满意回答。
热心网友 时间:2022-04-27 23:56
area.setText(s);是每次循环都更换的,所以只显示一行,你可以用System.out.println(s)测试一下
热心网友 时间:2022-04-28 02:04
试一下改成下面这语句:
String s= null;追问这样是只读取第一行..
追答其实全部已经读出来了,问题是在这里
area.setText(s); ----> area.setText(area.getText()+s);