2016-01-13 155 views
-1

我嘗試輸出文本文件的內容。但我不知道如何使用RandomAccessFile。我在谷歌沒有找到好的例子。我希望得到一些幫助。使用RandomAccessFile讀取txt文件(Java)

import java.io.File; 
import java.io.FileNotFoundException; 
import java.io.IOException; 
import java.io.RandomAccessFile; 

public class ReadTextFile { 

    public static void main(String[] args) throws IOException { 

     File src = new File ("C:/Users/hansbaum/Documents/Ascii.txt"); 
     cat(src); 
    } 

    public static void cat(File quelle){ 
     try (RandomAccessFile datei = new RandomAccessFile(quelle, "r")){ 

//   while(datei.length() != -1){   
//    datei.seek(0); // 
//   }    
     } catch (FileNotFoundException fnfe) { 
      System.out.println("Datei nicht gefunden!"); 
     } catch (IOException ioe) { 
      System.err.println(ioe); 
     } 
    } 
} 
+0

你點擊搜索按鈕,當你使用谷歌? –

+0

https://docs.oracle.com/javase/7/docs/api/java/io/RandomAccessFile.html 應該會幫助你 – amkz

回答

1

doc

try (RandomAccessFile datei = new RandomAccessFile(quelle, "r")){ 
     String line; 
     while ((line = datei.readLine()) != null) { 
      System.out.println(line); 
     } 

     System.out.println(); 
    } catch (FileNotFoundException fnfe) { 
    } catch (IOException ioe) { 
     System.err.println(ioe); 
    } 
+0

非常感謝。我們的學校講座僅包括閱讀方法。 –

0

相關的是什麼使你覺得你需要一個RandomAccessFile的?最簡單的方法可能是使用nio的便利方法。有了這些,閱讀文件就像Java一樣接近單線程。

import java.nio.file.Files; 
import java.nio.file.Paths; 
import java.nio.charset.StandardCharsets; 
import java.util.List; 
import java.io.IOException; 
class Test { 
    public static void main(String[] args) throws IOException { 
    List<String> lines = Files.readAllLines(Paths.get("./Test.java"), StandardCharsets.UTF_8); 
    for (String l: lines) 
     System.out.println(l); 
    } 
} 

但請注意,如果您碰巧使用非常大的文件,因爲它們可能不適合內存,這不是一個好主意。

+0

它只是爲了學校。 –

0

嘗試在另一個文件out.txt像這樣來創建FileChannelStreamreadwrite

 try (RandomAccessFile datei = new RandomAccessFile(quelle, "r").getChannel();){ 

     // Construct a stream that reads bytes from the given channel. 
     InputStream is = Channels.newInputStream(rChannel); 

     File outFile = new File("out.txt"); 

     // Create a writable file channel 
     WritableByteChannel wChannel = new RandomAccessFile(outFile,"w").getChannel(); 

     // Construct a stream that writes bytes to the given channel. 
     OutputStream os = Channels.newOutputStream(wChannel); 

     // close the channels 
     is.close(); 
     os.close();