个性化阅读
专注于IT技术分析

如何用Java打开文件

本文概述

有以下几种方法可以用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 argument
File 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 not
desktop.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 argument
File file=new File("C:\\demo\\demofile.txt"); 
FileInputStream fis=new FileInputStream(file);     //opens a connection to an actual file
System.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 argument
File file=new File("C:\\demo\\demofile.txt"); 
//creates a buffer reader input stream
BufferedReader 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 argument
FileReader 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 scanned
while (sc.hasNextLine()) 		//returns true if and only if scanner has another token
System.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 elements
while (itr.hasNext()) 		//returns true if and only if scanner has another token
System.out.println(itr.next());      //prints the content of the file
} 
}

输出:

如何用Java打开文件

赞(0)
未经允许不得转载:srcmini » 如何用Java打开文件

评论 抢沙发

评论前必须登录!