1. java怎逐行读取txt,再把值赋予给一个二维数组,救命啊,明天就要交作业了!
1.javaIO读取文件里面一行数据:
try{
Filefile=newFile(yourFile);
FileReaderfred=newFileReader(file);
BufferedReaderbfred=newBufferedReader(fred);
Stringtemp="";
int[][]yourArr=new[4][4];//前提是你的txt里面的数据也是4行4列的
introw=0;
while(null!=(temp=bfred.readLine())){//读取一行
String[]newArr=temp.split(",");
for(intj=0;j<newArr.length;j++)
yourArr[row][j]=Integer.parseInteger(newArr[j]);
row++;
}
//这里可以遍历输出.看看获取有没有成功
}catch(Exceptione){
System.out.print(e.toString());
}
2. java怎么读入文件,并逐行输出
java读入文件,并逐行输出,先在D://home建立个文件夹,然后创建一个a.txt文件,然后编辑文件,文本编辑的编码是utf-8,然后用流逐行读取输出,如下:
importjava.io.BufferedInputStream;
importjava.io.BufferedReader;
importjava.io.File;
importjava.io.FileInputStream;
importjava.io.InputStream;
importjava.io.InputStreamReader;
publicclassTestC{
publicstaticvoidmain(String[]args){
//获取要读取的文件
FilereadFile=newFile("D://home/a.txt");
//输入IO流声明
InputStreamin=null;
InputStreamReaderir=null;
BufferedReaderbr=null;
try{
//用流读取文件
in=newBufferedInputStream(newFileInputStream(readFile));
//如果你文件已utf-8编码的就按这个编码来读取,不然又中文会读取到乱码
ir=newInputStreamReader(in,"utf-8");
//字符输入流中读取文本,这样可以一行一行读取
br= newBufferedReader(ir);
Stringline="";
//一行一行读取
while((line=br.readLine())!=null){
System.out.println(line);
}
}catch(Exceptione){
e.printStackTrace();
}finally{
//一定要关闭流,倒序关闭
try{
if(br!=null){
br.close();
}
if(ir!=null){
ir.close();
}
if(in!=null){
in.close();
}
}catch(Exceptione2){
}
}
}
}
结果:
helloworld
您好
123456
3. java编程:从一个名为file的文件中逐行读取然后将读取的内容放进另一个文件file1中。
/**
* 以行为单位读取文件,常用于读面向行的格式化文件
*
* @param fileName
* 文件名
*/
public static void readFileByLines(String fileName) {
File file = new File(fileName);
BufferedReader reader = null;
try {
System.out.println("以行为单位读取文件内容,一次读一整行:");
reader = new BufferedReader(new FileReader(file));
String tempString = null;
int line = 1;
// 一次读入一行,直到读入null为文件结束
while ((tempString = reader.readLine()) != null) {
// 显示行号
System.out.println("line " + line + ": " + tempString);
line++;
}
reader.close();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e1) {
}
}
}
}
/**
* 文件写入
*
* @param filePath 路径名称
* @param sb 要写入的字符
*/
public void writeFromBuffer(String filePath, String sb)throws IOException {
File file = new File(filePath);
FileWriter fw;
try {
fw = new FileWriter(file);
if (sb.toString() != null && !"".equals(sb.toString())) {
fw.write(sb.toString());
}
fw.close();
} catch (IOException e) {
throw new IOException("文件写入异常!请检查路径名是否正确!");
}
}
自己组织一下,读取的数据可以放在stringbuffer里然后在传给写入方法
4. Java编程:如何一行一行读取TXT文档
用BufferedReader的这个类,其中嵌套的十一个输入流,然后用其中的readLine()方法
5. java根据文件名 读取文本文件的内容逐行显示到JTextArea里
可以通过BufferedReader 流的形式进行流缓存,之后通过readLine方法获取到缓存的内容,之后将内容增加到JTextArea。
BufferedReader bre = null;
try {
String file = "D:/test/test.txt";
bre = new BufferedReader(new FileReader(file));//此时获取到的bre就是整个文件的缓存流
while ((str = bre.readLine())!= null) // 判断最后一行不存在,为空结束循环
{
JTextArea.add(str);//此处将内容写入到JTextArea即可
};
备注: 流用完之后必须close掉,如上面的就应该是:bre.close(),否则bre流会一直存在,直到程序运行结束。
6. java读取TXT文件并且显示打开进度,最后要逐行显示
importjavax.swing.*;
importjava.awt.*;
importjava.awt.event.*;
importjava.beans.*;
importjava.io.*;
importjava.util.List;
/**
*@authorHardneedl
*/
{
publicStringgetTitle(){return"ProgressDemo";}
=newDimension(600,400);
(){returnsize;}
publicDimensiongetMaximumSize(){returnsize;}
publicDimensiongetMinimumSize(){returnsize;}
publicDimensiongetSize(){returnsize;}
privateJTextAreatextArea;
privateJProgressBarbar;
<String,String>{
privateFilefile;
privateJTextAreaarea;
privateintpro=0;
privateReadSwingWork(Filef,JTextAreaarea){
file=f;
this.area=area;
}
protectedStringdoInBackground()throwsException{
FileInputStreamfileReader=newFileInputStream(file);
intmaxLen=fileReader.available();
bytebuf[]=newbyte[1];
Strings=null;
while(fileReader.read(buf)!=-1){
s=newString(buf);
publish(s);
setProgress(100*(pro++)/maxLen);
}
fileReader.close();
returns;
}
protectedvoidprocess(List<String>chunks){
for(Strings:chunks)
area.append(s);
}
}
{
privateJFileChooserchooser;
privateOpenFileAction(){
super("Open...");
}
publicvoidactionPerformed(ActionEvente){
textArea.setText(null);
if(chooser==null){
chooser=newJFileChooser(".");
chooser.setDialogType(JFileChooser.OPEN_DIALOG);
chooser.setMultiSelectionEnabled(false);
chooser.setDialogTitle("openfile");
}
if(chooser.showOpenDialog(null)==JFileChooser.APPROVE_OPTION){
Filefile=chooser.getSelectedFile();
if(file!=null){
SwingWorkerwork=newReadSwingWork(file,textArea);
work.addPropertyChangeListener(newPropertyChangeListener(){
publicvoidpropertyChange(PropertyChangeEventevt){
if("progress".equals(evt.getPropertyName())){
bar.setValue((Integer)evt.getNewValue());
}
}
});
work.execute();
}
}
}
}
ProgressDemo()throwsHeadlessException{
init();
attachListeners();
doLay();
}
privatevoidinit(){
textArea=newJTextArea();
bar=newJProgressBar(0,100);
}
privatevoidattachListeners(){
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
privatevoiddoLay(){
finalContainercontainer=getContentPane();
container.add(newJButton(newOpenFileAction()),BorderLayout.NORTH);
container.add(newJScrollPane(textArea),BorderLayout.CENTER);
container.add(bar,BorderLayout.SOUTH);
pack();
setVisible(true);
}
publicstaticvoidmain(String...args){
System.setProperty("swing.defaultlaf","com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
SwingUtilities.invokeLater(
newRunnable(){
publicvoidrun(){
newProgressDemo();
}
}
);
}
}
7. java请初始化一个变量fileIn,可以实现从指定的文件a.txt中逐行读取文件内容
BufferedReaderfileIn=newBufferedReader(newFileReader(newFile("a.txt")));
8. java中用scanner逐行读取文件,但某一行的数据太大,可以达到上千万个字符
如果是这样的话,不建议通过scanner来读取那么大量的字符数,建议您把原本要输入的数据存储到一个文件中,然后scanner读取的只是一个文件路径,然后在你的程序中来解析这个文件的数据即可,这样也好维护好扩展,不至于在命令行下输入一大堆东西,有时候都搞不清楚了,而且你直接输入命令行,还会出现各种问题,假设你的数据中包含空格什么的,会被拆分成多个,总之这种做法是极其不推荐的,希望你能考虑使用我上面提到的方法试试。
9. java 逐行读取txt中的数据存放到数组
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class Test {
public static void main(String[] args) throws NumberFormatException,
IOException {
BufferedReader reader = new BufferedReader(new FileReader("file.txt"));
String line = "";
List<Integer> list = new ArrayList<Integer>();
while ((line = reader.readLine()) != null) {
list.add(Integer.parseInt(line));
}
reader.close();
Integer[] num = list.toArray(new Integer[list.size()]);
System.out.println(Arrays.toString(num));
}
}
10. 利用java.nio的FileChannel能够实现按行读取文件吗(解决了)
利用java.nio的FileChannel能够实现按行读取文件:
具体思路是:设置两个缓冲区,一大一小,大的缓冲区为每次读取的量,小的缓冲区存放每行的数据(确保大小可存放文本中最长的那行)。读取的时候判断是不是换行符13,是的话则返回一行数据,不是的话继续读取,直到读完文件。
实现方法:
FileChannelfc=raf.getChannel();
//一次读取文件,读取的字节缓存数
ByteBufferfbb=ByteBuffer.allocate(1024*5);
fc.read(fbb);
fbb.flip();
//每行缓存的字节根据你的实际需求
ByteBufferbb=ByteBuffer.allocate(500);
//判断是否读完文件
publicbooleanhasNext()throwsIOException{
if(EOF)returnfalse;
if(fbb.position()==fbb.limit()){//判断当前位置是否到了缓冲区的限制
if(readByte()==0)returnfalse;
}
while(true){
if(fbb.position()==fbb.limit()){
if(readByte()==0)break;
}
bytea=fbb.get();
if(a==13){
if(fbb.position()==fbb.limit()){
if(readByte()==0)break;
}
returntrue;
}else{
if(bb.position()<bb.limit()){
bb.put(a);
}else{
if(readByte()==0)break;
}
}
}
returntrue;
}