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;
}