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

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);

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值