您的位置:首页 > 编程语言 > Java开发

java修改指定文件内容swing界面(郭盖)

2013-03-31 17:05 351 查看
package com.dao;
import java.awt.BorderLayout;

import java.lang.Object;

import java.awt.Component;

import java.awt.GridLayout;

import java.awt.Button;

import java.awt.Dimension;

import java.awt.Panel;

import java.awt.ScrollPane;

import java.awt.TextField;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.io.BufferedReader;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.FileReader;

import java.io.FileWriter;

import java.io.IOException;

import java.io.InputStreamReader;

import java.util.ArrayList;

import java.util.List;

import java.util.Properties;

import javax.swing.*;

import java.io.*;
public class InstallFiletnsnamesText {

private final static String HOST = "HOST";

private final static String PORT = "PORT";

private final static String SERVICE_NAME = "SERVICE_NAME";

JFrame f = new JFrame();

Panel ppTotal;

JLabel l1;

JLabel l2;

JLabel l3;
JTextField t1;

JTextField t2;

JTextField t3;
String HOSTValue;

String PORTValue;

String SERVICE_NAMEValue;

// prperties参数输出流

FileOutputStream fos;

FileInputStream fis;

// String text11 = "";

StringBuffer filetext=new StringBuffer();

// 取得地址

String url = "d:/tnsnames.ora";

// String url2="d:/tnsnames.ora";

String url2 = "d:/" + "1.ora";

JButton jButton;
public static void main(String[] args) {

// TODO Auto-generated method stub

new InstallFiletnsnamesText().Show();

}
// 显示方法

public void Show() {

ppTotal= new Panel();

l1 = new JLabel();

l2 = new JLabel();

l3 = new JLabel();

t1 = new JTextField();

t2 = new JTextField();

t3 = new JTextField();

jButton = new JButton();

// 创建list集合

List list = new ArrayList();

// 属性集合对象

Properties prop = new Properties();

// 设置窗体宽度50,850

f.setPreferredSize(newDimension(400,300));

try {

// 创建输入流

fis = new FileInputStream(url);

// 读取字节

InputStreamReader isr = new InputStreamReader(fis);

// 读取字流

BufferedReader br = new BufferedReader(isr);

String line;

try {

// 用readLine读取一行的值,如果这一行不为空的话继续执行

while ((line = br.readLine())!=null) {

// 如果为空的话继续

if(line.equals(""))continue;

//

else filetext.append(line+"\r\n");

}

// String[] strlist=filetext.toString().split("\r\n");

// System.out.println(strlist.length);

} catch (IOException e) {

e.printStackTrace();

System.out.println("读取一行数据时出错");

}

// 关闭输入流

try {

fis.close();

} catch (IOException e1) {

// TODO Auto-generated catch block

e1.printStackTrace();

}

} catch (FileNotFoundException e) {

e.printStackTrace();

System.out.println("文件读取路径错误FileNotFoundException");

}

// begin,begin1,begin2取得名称首次出现位置

int indexH = filetext.toString().indexOf(HOST);

int indexP = filetext.toString().indexOf(PORT);

int indexS = filetext.toString().indexOf(SERVICE_NAME);

// HOSTValue,PORTValue,SERVICE_NAMEValue取得需要更改的值

HOSTValue = getValue(indexH,filetext.toString(),HOST);

PORTValue = getValue(indexP,filetext.toString(),PORT);

SERVICE_NAMEValue = getValue(indexS,filetext.toString(),SERVICE_NAME);

// 显示文件内容

// System.out.println("文件内容"+SERVICE_NAMEValue);

l1.setText("数据库主机地址");

t1.setText(HOSTValue);

// t1,t2,t3添加标示名称

// t1.setName(HOSTValue);

l2.setText("端口");

t2.setText(PORTValue);

// t2.setName(PORTValue);

l3.setText("数据库实例名称");

t3.setText(SERVICE_NAMEValue);

// 创建文件内容的panel

Panel p = new Panel();

p.add(l1);

p.add(l2);

p.add(l3);

p.add(t1);

p.add(t2);

p.add(t3);

// 设置样式

setLayout(p,l1,l2,l3,t1,t2,t3);

// String aa = textValue;

// p.add(textValue);

// 总panel中添加文件内容的panel对象

ppTotal.add(p);

ppTotal.add(jButton);

// 如果需要垂直方向滚动,则加上这句话

ScrollPane scroll = new ScrollPane();

// 设置pp1面板的长框

ppTotal.setPreferredSize(new Dimension(50,400));

scroll.add(ppTotal);

f.add(scroll);

jButton.setText("确定");

jButton.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

Save();

}

});

// ppTotal.add(jButton,BorderLayout.NORTH);

f.pack();

f.setVisible(true);

}
// 保存方法

public void Save() {

// String t1Value = t1.getText();

// if(HOSTValue != t1.getText()) {

// replace(HOSTValue, t1);

// }else if(PORTValue != t2.getText()) {

// replace ( PORTValue,t2 );

// }else if(PORTValue != t2.getText()) {

// replace ( SERVICE_NAMEValue,t3 );

// }

String local[] = {HOSTValue,PORTValue,SERVICE_NAMEValue};

String newvalues[] = {t1.getText(),t2.getText(),t3.getText()};

replaceAll(local,newvalues);

// for (int i=0;i

// replaceAll(local[i],getTextValue[i]);

// }

// replace(HOSTValue, t1);

// replace ( PORTValue,t2 );

// replace ( SERVICE_NAMEValue,t3 );

// replaceTxtByStr(HOSTValue,t1Value,url) ;

// System.out.println("修改过的值"+HOSTValue);

// replace (HOSTValue, t1);

// replace (PORTValue, t2);

// replace (SERVICE_NAMEValue, t3);

// System.out.println("t1:"+HOSTValue);

// System.out.println("t2:"+PORTValue);

// System.out.println("t3:"+SERVICE_NAMEValue);
}
public static void replaceTxtByStr(String oldStr, StringreplaceStr,

String path) {

String temp = "";

try {

File file = new File(path);

FileInputStream fis = new FileInputStream(file);

InputStreamReader isr = new InputStreamReader(fis);

BufferedReader br = new BufferedReader(isr);

StringBuffer buf = new StringBuffer();
// 保存该行前面的内容

for (int j = 1; (temp = br.readLine()) != null

&& !temp.equals(oldStr); j++) {

buf = buf.append(temp);

// buf = buf.append(System.getProperty("line.separator"));

}
// 将内容插入

buf = buf.append(replaceStr);
// 保存该行后面的内容

while ((temp = br.readLine()) != null) {

// buf = buf.append(System.getProperty("line.separator"));

buf = buf.append(temp);

}
br.close();

FileOutputStream fos = new FileOutputStream(file);

PrintWriter pw = new PrintWriter(fos);

pw.write(buf.toString().toCharArray());

pw.flush();

pw.close();

} catch (IOException e) {

e.printStackTrace();

}

}

// 替换修改文件方法

public void replaceAll(String[] local, String[] newvalues) {

// 读取流

try {

// 原文件

// FileReader fr = new FileReader(url);

// BufferedReader br = new BufferedReader(fr);

System.out.println("整体:" + filetext);

String[] strlist=filetext.toString().split("\r\n");

// 写入流

FileWriter fw = new FileWriter(url2);

for(int i=0;i

String line = strlist[i];

//替换

for(int z=0;z

line = line.replaceAll(local[z], newvalues[z]);

// 写入

}

fw.write(line + "\r\n");

}

fw.close();

// 源文件删除

delFile(url);

// 给新文件改名称

rename(url2);

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

// 更改名称方法

public void rename(String url) {

try {

File oldFile = new File(url);

if (!oldFile.exists()) {

oldFile.createNewFile();

}

System.out.println("修改前文件名称是:" +oldFile.getName());

String rootPath = oldFile.getParent();

System.out.println("根路径是:" + rootPath);

File newFile = new File(rootPath + File.separator + "tnsnames.ora");

System.out.println("修改后文件名称是:" +newFile.getName());

if (oldFile.renameTo(newFile)) {

System.out.println("修改成功!");

} else {

System.out.println("修改失败");

}

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

public static void delFile(String filePathAndName) {

try {

String filePath = filePathAndName;

filePath = filePath.toString();

java.io.File myDelFile = new java.io.File(filePath);

myDelFile.delete();
} catch (Exception e) {

System.out.println("删除文件操作出错");

e.printStackTrace();
}
}
public void setLayout(Panel p, JLabel l1, JLabel l2,JLabel l3,

JTextField t1, JTextField t2, JTextField t3) {

// javax.swing.GroupLayout panel1Layout = new

// javax.swing.GroupLayout(p);

// 设置样式

javax.swing.GroupLayout panel1Layout = new javax.swing.GroupLayout(p);

p.setLayout(panel1Layout);

panel1Layout

.setHorizontalGroup(panel1Layout

.createParallelGroup(

javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(

panel1Layout

.createSequentialGroup()

.addGap(84, 84, 84)

.addGroup(

panel1Layout

.createParallelGroup(

javax.swing.GroupLayout.Alignment.TRAILING)

.addComponent(l3)

.addComponent(l1)

.addComponent(

l2,

javax.swing.GroupLayout.Alignment.LEADING))

.addPreferredGap(

javax.swing.LayoutStyle.ComponentPlacement.RELATED,

43, Short.MAX_VALUE)

.addGroup(

panel1Layout

.createParallelGroup(

javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(

panel1Layout

.createSequentialGroup()

.addGroup(

panel1Layout

.createParallelGroup(

javax.swing.GroupLayout.Alignment.TRAILING)

.addComponent(

t1,

javax.swing.GroupLayout.PREFERRED_SIZE,

113,

javax.swing.GroupLayout.PREFERRED_SIZE)

.addComponent(

t2,

javax.swing.GroupLayout.PREFERRED_SIZE,

113,

javax.swing.GroupLayout.PREFERRED_SIZE))

.addGap(

76,

76,

76))

.addGroup(

panel1Layout

.createSequentialGroup()

.addComponent(

t3)

.addContainerGap()))));

panel1Layout

.setVerticalGroup(panel1Layout

.createParallelGroup(

javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(

panel1Layout

.createSequentialGroup()

.addGap(55, 55, 55)

.addGroup(

panel1Layout

.createParallelGroup(

javax.swing.GroupLayout.Alignment.BASELINE)

.addComponent(

t1,

javax.swing.GroupLayout.PREFERRED_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.PREFERRED_SIZE)

.addComponent(l1))

.addGap(25, 25, 25)

.addGroup(

panel1Layout

.createParallelGroup(

javax.swing.GroupLayout.Alignment.BASELINE)

.addComponent(l2)

.addComponent(

t2,

javax.swing.GroupLayout.PREFERRED_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.PREFERRED_SIZE))

.addGap(31, 31, 31)

.addGroup(

panel1Layout

.createParallelGroup(

javax.swing.GroupLayout.Alignment.BASELINE)

.addComponent(l3)

.addComponent(

t3,

javax.swing.GroupLayout.PREFERRED_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.PREFERRED_SIZE))

.addContainerGap(126, Short.MAX_VALUE)));

}
public String getValue(int begin, String text11, Stringa) {

// String ipcode = "
您的IP地址是:[110.201.73.44]
";

// //比如我们获取的网页代码是这样一段字符串,而我们只需要中括号之间的一段IP地址

// int begin = text11.indexOf('['); //获得'[' 第一次出现的位置的索引下标值

// System.out.println("begin:"+begin);

String Address = text11.substring(begin);

// String ip = text11.substring(begin ,end-begin );

// Substring函数的第一个参数是从第几位下标开始截取(这里+1是因为我们要从'['后面的一位开始截取,

// 后面的-1是同样的道理),第二个参数是截取多少个字符串

// 获得']'第一次出现的位置的索引下标值System.out.println("end:"+end);

int end = Address.indexOf(')');

// 截取HOST = 192.168.1.217

String adIp = Address.substring(a.length(), end).replaceAll("=","").trim();

// System.out.println(adIp);

return adIp;

}
}
源文件
# tnsnames.ora Network Configuration File:E:\oracle\product\10.2.0\client_1\network\admin\tnsnames.ora

# Generated by Oracle configuration tools.

BJDIG =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = aa)(PORT = bb))

)

(CONNECT_DATA =

(SERVICE_NAME = cc)

)

)

1.取出全部字符串

2.转成大写

3.取出头名称,定位到最后一个括号,去掉空格和等号

4.判断如果原来字符串里面名称相等,并且后面的值与原来的值相符,更改成新的值。

------------
1.StringBuffer 有缓存,是很好的容器
StringBuffer filetext=new StringBuffer();
2.输入流读取字节读取字流
// 创建输入流

fis = new FileInputStream(url);

// 读取字节

InputStreamReader isr = new InputStreamReader(fis);

// 读取字流

BufferedReader br = new BufferedReader(isr);
//创建字符串接循环读取的值
String line;

try {

// 用readLine读取一行的值,如果这一行不为空的话继续执行

while ((line = br.readLine())!=null) {

// 如果为空的话继续

if(line.equals(""))continue;

//

else filetext.append(line+"\r\n");

}

// String[] strlist=filetext.toString().split("\r\n");

// System.out.println(strlist.length);

} catch (IOException e) {

e.printStackTrace();

System.out.println("读取一行数据时出错");

}

// 关闭输入流

try {

fis.close();

} catch (IOException e1) {

// TODO Auto-generated catch block

e1.printStackTrace();

}
3.用数据接值,用split根据回车和换行拆分字符串
String[]strlist=filetext.toString().split("\r\n");
4.substring取得节点下标
String Address = text11.substring(begin);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: