如何用Java打开文件

本文概述

  • Java Desktop类
  • Java FileInputStream类
  • Java BufferedReader类
  • Java FileReader类
  • Java Scanner类
  • Java Nio软件包
有以下几种方法可以用Java打开文件:
  • Java Desktop类
  • Java FileInputStream类
  • Java BufferedReader类
  • Java FileReader类
  • Java Scanner类
  • Java Nio软件包
Java Desktop类 Java Desktop类提供了open()方法来打开文件。它属于java.awt包。桌面实施取决于平台, 因此有必要检查操作系统是否支持桌面。 Desktop类查找在本机桌面上注册的关联应用程序以处理文件。如果没有关联的应用程序或应用程序无法启动, 则会引发FileNotFoundException。启动用户默认浏览器以显示指定的URI。
  • 使用可选的mail-to URI启动用户默认邮件客户端。
  • 启动注册的应用程序以打开, 编辑或打印指定的文件。
Desktop类的open()方法启动关联的应用程序以打开文件。它以文件作为参数。该方法的签名是:
public void open (File file) throws IOException

该方法引发以下异常:
  • NullPointerException:如果文件为null。
  • IllegalArgumentException:当文件不存在时引发。
  • IOException:当没有与给定文件类型关联的应用程序时引发。
  • UnsupportedOperationExecution:如果当前平台不支持Desktop.Action.Open操作。

import java.awt.Desktop; import java.io.*; public class OpenFileExample1 {public static void main(String[] args) {try{//constructor of file class having file as argumentFile file = new File("C:\\demo\\demofile.txt"); if(!Desktop.isDesktopSupported())//check if Desktop is supported by Platform or not{System.out.println("not supported"); return; }Desktop desktop = Desktop.getDesktop(); if(file.exists())//checks file exists or notdesktop.open(file); //opens the specified file}catch(Exception e){e.printStackTrace(); }}}

当我们运行上述程序时, 它将在默认文本编辑器中打开指定的文本文件。我们还可以打开.docx, .pdf和.jpg文件。
输出:
如何用Java打开文件

文章图片
Java FileInputStream类 Java FileInputStream类用于打开和读取文件。我们可以使用FileInputStream类的构造函数打开和读取文件。构造函数的签名是:
public FileInputStream(File file) throws FileNotFoundException

它接受文件作为参数。如果文件不存在或文件名是目录, 则抛出FileNotFoundException。

import java.io.*; import java.util.Scanner; public class OpenFileExample2{ public static void main(String args[]){try{//constructor of file class having file as argumentFile file=new File("C:\\demo\\demofile.txt"); FileInputStream fis=new FileInputStream(file); //opens a connection to an actual fileSystem.out.println("file content: "); int r=0; while((r=fis.read())!=-1){System.out.print((char)r); //prints the content of the file}}catch(Exception e){e.printStackTrace(); }}}

输出:
如何用Java打开文件

文章图片
Java BufferedReader类 Java BufferedReader类从字符输入流读取文本。它属于java.io包。我们使用BufferedReader类的构造函数来打开或读取文件。构造函数的签名是:
public BufferedReader(Reader in)

它创建一个使用默认大小的输入缓冲区的缓冲字符输入流。它使用默认大小的输入缓冲区。

import java.io.*; import java.util.Scanner; public class OpenFileExample3{ public static void main(String args[]){try{//constructor of File class having file as argumentFile file=new File("C:\\demo\\demofile.txt"); //creates a buffer reader input streamBufferedReader br=new BufferedReader(new FileReader(file)); System.out.println("file content: "); int r=0; while((r=br.read())!=-1){System.out.print((char)r); }}catch(Exception e){e.printStackTrace(); }}}

输出:
如何用Java打开文件

文章图片
Java FileReader类 Java FileReader类也用于打开和读取文件。它属于java.io包。这是读取文件字符的便利。它用于使用FileInputStream类读取原始字节。我们使用FileInputStream类的构造函数来打开和读取文件。构造函数的签名是:
public FileReader(File file) throws FileNotFoundException

它接受文件作为参数。如果指定的文件不存在或文件名是目录, 则抛出FileNotFoundException。

import java.io.*; public class OpenFileExample4{ public static void main(String args[]){try{//constructor of the File class having file as an argumentFileReader fr=new FileReader("C:\\demo\\demofile.txt"); System.out.println("file content: "); int r=0; while((r=fr.read())!=-1){System.out.print((char)r); //prints the content of the file }}catch(Exception e){e.printStackTrace(); }}}

输出:
如何用Java打开文件

文章图片
Java Scanner类 Java Scanner类也用于打开和读取文件。 Scanner类属于java.util包。 Scanner类的构造函数用于打开和读取文件。构造函数的签名是:
public scanner (File source) throws FileNotFoundException

它接受文件(要扫描)作为参数。如果找不到文件源, 它也会引发FileNotFoundException。

import java.io.File; import java.util.Scanner; public class OpenFileExample5{ public static void main(String[] args) { try{File file=new File("C:\\demo\\demofile.txt"); Scanner sc = new Scanner(file); //file to be scannedwhile (sc.hasNextLine())//returns true if and only if scanner has another tokenSystem.out.println(sc.nextLine()); }catch(Exception e){e.printStackTrace(); }} }

输出:
如何用Java打开文件

文章图片
Java Nio软件包 readAllLines()方法:readAllLines()方法是File类的方法。它从文件读取所有行, 并使用UTF-8字符集将文件中的字节解码为字符。它将文件中的行作为列表返回。该方法的签名是:
public static List< String> readAllLines(Path path) throws IOException

其中path是文件路径。
上面的方法等效于调用以下方法:
File.readAllLines(path, Standard CharSets.UTF_8)

Collections.emptyList():emptyList()方法是属于java.util包的Collection类的方法。它用于获取一个空列表。该方法的签名是:
public static final < T> List < T> emptyList()


import java.util.*; import java.nio.charset.StandardCharsets; import java.nio.file.*; import java.io.*; public class OpenFileExample6{ public static List< String> readFileInList(String fileName) { List< String> lines = Collections.emptyList(); try{ lines=Files.readAllLines(Paths.get(fileName), StandardCharsets.UTF_8); } catch (IOException e) { e.printStackTrace(); } return lines; } public static void main(String[] args) { List l = readFileInList("C:\\demo\\demofile.txt"); Iterator< String> itr = l.iterator(); //access the elementswhile (itr.hasNext())//returns true if and only if scanner has another tokenSystem.out.println(itr.next()); //prints the content of the file} }

【如何用Java打开文件】输出:
如何用Java打开文件

文章图片

    推荐阅读