java如何打开文本文件

goodlucktomyself 2009-05-07 11:03:52
请大家帮帮忙啊....
我想打开一个文本文件,如记事本那样:点击(文件)-->打开-->然后选择一个文本文件(*.txt),
然后该文件的内容能显示在窗口中。小弟不才,可能描述上有点不清楚,不过大概就是这个样子吧。呵呵
给出关键部分就行....!先在此谢谢大家啦
...全文
1006 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
kongluhua 2009-05-19
  • 打赏
  • 举报
回复
用FileChooser作为打开文件对话框,然后用文件IO流去读取就行了
clock19 2009-05-18
  • 打赏
  • 举报
回复
首先用File file=new File(filename);
这个时候可以根据自己的需要再继续封装该file
比如该文件是读文件,就可以再封装一次FileReader
具体是:FileReader freader=new FileReader(file);
有些涉及速度匹配,需要缓冲的情况,那么可以再在freader
上封装BufferReader,
具体是:BufferReader in=new BufferReader(freader);
各个封装后数据的读写调用相应的方法就ok。
另外需要说明,如果是写一个新的文件,我这里有点忘了,你可以
试一下到底文件在哪个时候新建。file有方法可以创建,好像在
封装file时也会自动创建。
拙见!!!
sachmx1234 2009-05-14
  • 打赏
  • 举报
回复
up
xiaojiezi 2009-05-13
  • 打赏
  • 举报
回复
看来还是有很多东西没有用过啊
tutucool 2009-05-12
  • 打赏
  • 举报
回复
学习
ambo_o 2009-05-11
  • 打赏
  • 举报
回复
br = new BufferedReader(fr = new FileReader(file1));

String s1 = "";
while ((s = br.readLine()) != null) {
s += System.getProperty("line.separator");
s1 += s;
}
{

qixiaorui 2009-05-08
  • 打赏
  • 举报
回复
qixiaorui 2009-05-08
  • 打赏
  • 举报
回复

package ql.wims;



import quanwen.*;

import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;
import javax.swing.*;
import java.sql.*;
import sun.io.*;
import java.net.*;
import java.beans.*;
import javax.swing.table.*;

public class SBST201 extends JPanel{

JScrollPane spPane=new JScrollPane();
public JTextArea taContents=new JTextArea();
JButton btnOK=new JButton();

SBSBusObject bo=new SBSBusObject();
public LocalLang ll;
JFileChooser file=new JFileChooser();
TextPreviewer txtPreviewer=new TextPreviewer();
TxtPreviewPanel txtPreviewPanel=new TxtPreviewPanel();
String userID="";

/**
* 该面板上的某些组件必须根据用户权限设定,因此,必须在构造函数中
* 引入用户的ID号
*/
public SBST201(String userID){
doInit();
}
private void doInit(){
btnOK.setText(ll.getValue("T201.gui.ok"));

btnOK.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(MouseEvent e) {
btnOK_mouseClicked();
}
});

setLayout(new BorderLayout());
add(pnl1,BorderLayout.NORTH);
add(spPane,BorderLayout.CENTER);
}
/**
* 从文本文件中获取需要的内容
*/
public void btnOK_mouseClicked(){

file.setAccessory(txtPreviewPanel);
file.setFileFilter(new SimpleFileFilter("txt",
ll.getValue("T201.dialog.fileType")));
file.setCurrentDirectory(new File(ll.getValue("T201.dialog.fileRoot")));
file.addPropertyChangeListener(new PropertyChangeListener()
{
public void propertyChange(PropertyChangeEvent e)
{
if (e.getPropertyName().equals(JFileChooser.SELECTED_FILE_CHANGED_PROPERTY))
{
txtPreviewer.configure((File)e.getNewValue());
}
}
});
int state=file.showOpenDialog(null);
File f=file.getSelectedFile();
if((f!=null)&&(state==file.APPROVE_OPTION))
{
try
{
tfContents.setText(f.getPath());
}
catch(Exception ex){}
}
else
{
tfContents.setText("c:\\1.txt");
}
try
{
taContents.setText("");

BufferedInputStream bin1=new BufferedInputStream(new FileInputStream(f));
BufferedReader br=new BufferedReader(new InputStreamReader(bin1));
String s="";
String firstLine="";
int i=0;
while((s=br.readLine())!=null){
if (i==0){
firstLine=s;
}else{
taContents.append(s+""+(char)0x0a+(char)0x0d);
}
i++;
}

taContents.setCaretPosition(0);
tfTitle.setText(firstLine);
}
catch(Exception ex)
{
ex.printStackTrace();
}
}

//---------------------------------------------------
//与父调用者之间的接口
//---------------------------------------------------
public static void main(String[] args){
SBST201 panel=new SBST201("00000000000000000000");
JDialog window=new JDialog((Frame)null,"测试窗口",true);
window.getContentPane().add(panel,BorderLayout.CENTER);
window.addWindowListener(new MyWindow());
window.setSize(600,450);
window.show();
}
//文本文件可访问组件
class TxtPreviewPanel extends JPanel
{
public TxtPreviewPanel()
{
//获取语言文件
INIOperate ini=new INIOperate(new File("c:/upload/ini/"+"SBS.ini"),20," ;");
String language="c:/upload/ini/"+"Lang_"+ini.getItem("语言/language")+".txt";
LocalLang ll=new LocalLang(language);
JLabel label=new JLabel(ll.getValue("T201.dialog.txtPreview"),SwingConstants.CENTER);
setPreferredSize(new Dimension(300,0));
setBorder(BorderFactory.createEtchedBorder());
setLayout(new BorderLayout());
label.setBorder(BorderFactory.createEtchedBorder());
//add(label,BorderLayout.NORTH);
add(txtPreviewer,BorderLayout.CENTER);
}
}
//文本文件预览类
class TextPreviewer extends JComponent
{
private JTextArea textArea=new JTextArea();
private JScrollPane scrollPane=new JScrollPane(textArea);
public TextPreviewer()
{

textArea.setBackground(new Color(235,255,235));
textArea.setEditable(false);
textArea.setLineWrap(true);
setBorder(BorderFactory.createEtchedBorder());
setLayout(new BorderLayout());
add(scrollPane,BorderLayout.CENTER);
}
public void configure(File file)
{
textArea.setText(contentsOfFile(file));
textArea.setCaretPosition(0);
}
public String contentsOfFile(File file){
String s="";
byte[] buff=new byte[50000];
byte[] b=new byte[1];
//取前四行
try
{
BufferedInputStream bin=
new BufferedInputStream(new FileInputStream(file));
int nch;
int hang=0;
int totalBytes=0;
while((hang<3)&&(nch=bin.read(b))!=-1)
{
buff[totalBytes++]=b[0];
if (b[0]==0x0d)
{
s=s+new String(buff,0,totalBytes);
hang++;
totalBytes=0;
}
}
bin.close();
}
catch(Exception ex)
{
s="Could not load file";
}
return s;
}
}
}


black_night 2009-05-08
  • 打赏
  • 举报
回复
有文件选择对话框,很方便用的。
  • 打赏
  • 举报
回复
[Quote=引用楼主 goodlucktomyself 的帖子:]
请大家帮帮忙啊....
我想打开一个文本文件,如记事本那样:点击(文件)-->打开-->然后选择一个文本文件(*.txt),
然后该文件的内容能显示在窗口中。小弟不才,可能描述上有点不清楚,不过大概就是这个样子吧。呵呵
给出关键部分就行....!先在此谢谢大家啦
[/Quote]
不知道楼主是想实现什么效果
是像记事本那样GUI形式还是
只是获取某一个文本的数据

但是都是使用文件流来实现
gousheng12345 2009-05-08
  • 打赏
  • 举报
回复
用文件流操作就可以了
gf173237 2009-05-08
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 qixiaorui 的回复:]
[code=java]
package ql.wims;


import quanwen.*;

import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;
import javax.swing.*;
import java.sql.*;
import sun.io.*;
import java.net.*;
import java.beans.*;
import javax.swing.table.*;

public class SBST201 extends JPanel{

JScrollPane spPane=new JScrollPane();
public JTextArea taConte…
[/Quote]
有这么复杂吗?
goodlucktomyself 2009-05-08
  • 打赏
  • 举报
回复
不好意思,我结贴的时候没看到通知...
忘了给你们加分,不过还是得谢谢你们肯帮忙,
下次继续找你们....呵呵
chaner2002 2009-05-08
  • 打赏
  • 举报
回复
这个很简单的说,用FileChooser作为打开文件对话框,然后用文件IO流去读取就行了

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧