qileilove

blog已经转移至github,大家请访问 http://qaseven.github.io/

PHP 自学教程之MySQL数据库

 PHP访问MySQL数据库的一般步骤:
  1、连接MySQL数据库:使用mysql_connect()函数建立与MySQL服务器的连接。
  2、选择MySQL数据库:使用mysql_select_db()函数选择MySQL数据库服务器上对于的数据库。
  3、执行SQL语句:在选择的数据库中使用mysql_query()函数执行SQL语句。
  4、关闭结果集:数据库操作完毕后,通过mysql_free_result()函数,释放MySQL系统资源。
  5、关闭MySQL服务器:在完成数据库操作,应该使用mysql_close()函数关闭与数据库服务器连接。
  PHP连接MySQL数据库实例代码:
<?php
//定义连接数据库相关变量
$dbhost ="localhost" ;
$dbuser = "swxm"; // 我的用户名
$dbpass = "swxm"; // 我的密码
$dbname = "shopping"; // 我的mysql库名
//连接到数据库函数---mysql_connect
$connection=mysql_connect($dbhost,$dbuser,$dbpass);
if(!$connection){
die("无法连接到MySQL数据库:</br>".mysql_error());//诊断连接错误
}
//选择数据库函数--------mysql_select_db
$db_selecct=mysql_select_db($dbname, $connection);
if(!$db_selecct)
{
die("无法连接到指定的数据库</br>".mysql_error());
}
$query="select * from  user ";//构建查询语句
//执行SQL查询函数-----------mysql_query
$result=mysql_query($query);
if(!$result)
{
die("无法进行相关查询操作</br>".mysql_error());
}
//查询结果
while($result_row=mysql_fetch_row($result))//取出结果并显示
{
$num=$result_row[0];
$age=$result_row[1];
$name=$result_row[2];
echo "<tr>";
echo "<td>$num</td><br/>";
echo "<td>$age</td><br/>";
echo "<td>$name</td>";
echo "</tr>";
}
?>
  结果展示:

posted @ 2014-02-08 10:59 顺其自然EVO 阅读(217) | 评论 (0)编辑 收藏

TestNG基本注释一:简单实例

一个简单类的实例,指引你如何开始使用testng单元测试框架。
  使用的工具:
  TestNG 6.8.7
  Maven 3
  Eclipse IDE
  1.testng依赖
  在pom.xml中添加testng库:
  pom.xml
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.8.7</version>
<scope>test</scope>
</dependency>
  2.testng实例
package test.java.com.testng.test;
import org.testng.annotations.Test;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.DataProvider;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeSuite;
import org.testng.annotations.AfterSuite;
public class LoginTest {
@Test(dataProvider = "dp")
public void f(Integer n, String s) {
}
@BeforeMethod
public void beforeMethod() {
}
@AfterMethod
public void afterMethod() {
}
@DataProvider
public Object[][] dp() {
return new Object[][] {
new Object[] { 1, "a" },
new Object[] { 2, "b" },
};
}
@BeforeClass
public void beforeClass() {
}
@AfterClass
public void afterClass() {
}
@BeforeTest
public void beforeTest() {
}
@AfterTest
public void afterTest() {
}
@BeforeSuite
public void beforeSuite() {
}
@AfterSuite
public void afterSuite() {
}
}

posted @ 2014-02-08 10:42 顺其自然EVO 阅读(278) | 评论 (0)编辑 收藏

LoadRunner中取Request、Response

 今天发现LoadRunner两个“内置变量”:
  1、REQUEST,用于提取完整的请求头信息。
  2、RESPONSE,用于提取完整的响应头信息。
  响应头信息用可用其它方式实现,但请求头信息还真不知道可以这样拿到。太隐蔽了吧!
  注意,这两个变量仅在请求前使用web_save_header注册使用。示例如下:
Action(){
web_set_max_html_param_len("262144"); // 默认最大长度为256
web_reg_save_param("ResponseBody", "LB=", "RB=", "Search=Body", LAST);
web_save_header(REQUEST, "RequestHeader");// REQUEST为内置变量,保存请求的头信息,需在发送URL请求前注册使用
web_save_header(RESPONSE, "ResponseHeader");// RESPONSE保存响应的头信息
web_url("higkoo",
"URL=http://hi.baidu.com/higkoo",
"Resource=0",
"RecContentType=text/html",
"Mode=HTTP",
LAST);
lr_output_message("# 请求头信息:\n %s", lr_eval_string("{RequestHeader}"));
lr_output_message("# 响应头信息:\n %s", lr_eval_string("{ResponseHeader}"));
lr_output_message("# 响应内容体:\n %s", lr_eval_string("{ResponseBody}"));
}

posted @ 2014-02-08 10:37 顺其自然EVO 阅读(556) | 评论 (0)编辑 收藏

TestLink 安装配置

  TestLink 是基于web的 测试用例 管理系统,主要功能是 测试用例 的创建、管理和执行,并且还提供了一些简单的统计功能。
  版本:testlink-1.9.7.tar.gz
  一、安装程序包下载
  下载php的安装包
  下载TestLink的安装包
  mysql和httpd安装参考我的另外两篇文章,mysql多实例安装配置以及http安装配置
  二、安装php
  php安装到data下
./configure -with-mysql=/data/msyql -with-apxs2=/data/apache2/bin/apxs
make
make tes
make install
cp php.ini-development /usr/local/lib/php.ini
  1、修改httpd配置
  # cd /data/apache2/conf/
  # vi httpd.conf
  在LoadModule处增加一行:
  LoadModule php5_module  modules/libphp5.so
  在AddType处添加内容为:
  AddType application/x-httpd-php .php .phtml
  保存后重启httpd服务
  # service httpd restart
  2、修改php配置
  # vi php.ini
  修改max_execution_time=120
  取消掉;extension=php_gd2.dll 前面的;号,让其生效
  修改;date.timezone的值为:date.timezone=”Asia/Shanghai”,并去掉前面的;号,让其生效
  修改mysql.default_port=3306
  修改mysql.default_socket=/data/dbdata_3306/mysqld.sock(注意:是mysql安装时设置的路径)
  保存后重启httpd服务
  # service httpd restart
  3、安装配置TestLink
# tar -zxvf testlink-1.9.4.tar.gz
# mv testlink-ga-testlink-code /data/apache2/htdocs/TestLink
# cd /data/apache2/htdocs/
# chmod 777 –R testlink
  4、修改testlink配置文件
  # cd/data/apache2/htdocs/TestLink
  # vi config.inc.php
  修改如下内容:
$tlCfg->default_language = 'en_GB';改为$tlCfg->default_language = 'zh_CN';
$tlCfg->log_path=’/data/apache2/htdocs/TestLink/logs/’
$g_repositoryPath=’/data/apache2/htdocs/TestLink/upload_area/’
  修改完毕保存
  5、访问TestLink
  在URL中输入:http://localhost/TestLink/install/index.php
  在界面中输入数据库的用户名:root;密码:123456
  成功后出现TestLink的登录页面http://localhost/TestLink/login.php
  用户名:admin;密码:admin 登录即可。

posted @ 2014-02-08 10:35 顺其自然EVO 阅读(472) | 评论 (0)编辑 收藏

jenkins详细讲解之首页



如图我们可以看到首页很直接明了的向我们展示了功能菜单和job的状态栏 例如 每个job 成功或失败 。

首先新建job

点击进入
如图 我们构建一个 自由风格的 JOB








我们可以看到当我们创建完JOB后 就进入了配置页面,里面有项目的名称,描述丢弃构建的策略等选项,以及版本控制功能的集成,构建触发器的配置 构建动作 和构建后的操作 等等,以后我们会用实战演示!下来让我们在看看其他类型的JOB,例如构建一个maven的项目 创建后 进入配置页面,
在这里输入文本



我们可以看到这是一个关于maven的项目的定制JOB 很方便~

下来我们看看 
 
适用于多配置项目,例如多环境测试,平台指定构建,等等.


我们可以看到Advanced Project Options以及Configuration Matrix 我们可以通过配置不同的节点来实现不同环境下集成

下来我们看看
 
这个类型的任务允许你记录执行在外部Jenkins的任务, 任务甚至运行在远程机器上.这可以让Jenkins作为你所有自动构建系统的控制面板.参阅 这个文档查看详细内容.




posted @ 2014-02-07 15:02 顺其自然EVO 阅读(1493) | 评论 (0)编辑 收藏

Sunshine数据库篇之查询

字体:        | 上一篇 下一篇 | 打印  | 我要投稿  | 推荐标签: 软件开发 数据库

  需要的model,数据库映射,sql生成器都用写的代码生成器生成,提高开发效率
  1:最简单的查询单条记录
  AJ.Model.User ou = IDB.Simple<AJ.Model.User>(AJ.CModel.User.Select.Where(a => a.USER_TYPE == 1 & a.PASSWORD == "aaa"));
  同写sql的方式
  AJ.Model.User ou = IDB.Simple<AJ.Model.User>("select * from User where USER_TYPE = @ut and PASSWORD = @pa", new { ut = 1, pa = "aaa" });
  2:查询多条记录
  List<AJ.Model.User> olist = IDB.List<AJ.Model.User>(AJ.CModel.User.Select.Where(a=>a.UUID > 2));
  同写sql的方式
  List<AJ.Model.User> olist = IDB.List<AJ.Model.User>("select * from User where uuid > @uid", new { uid = 2 });
  查询1000条30毫秒左右
  3:使用直接中间语言Emit查询方式
  只用使用中间语言可以提高不少效率,可以减少解析的时间,但经过测试效率提高不是非常明显,现在.net的效率还是优化得非常不错了,为了维护方便
  主要还是使用写代码的方式
  List<AJ.Model.User> olist = IDB.ListEmit<AJ.Model.User>(AJ.CModel.User.Select.Where(a=>a.UUID > 2));
  4:条件的使用
  条件可以在Where后边任意组合
  使用 and     (where a.USER_TYPE = @a3qf6eqse and  a.PASSWORD = @dve2tge)
  AJ.CModel.User.Select.Where(a => a.USER_TYPE == 1 & a.PASSWORD == "aaa")
  使用 or       (where a.USER_TYPE = @a3qf6eqse or  a.PASSWORD = @dve2tge)
  AJ.CModel.User.Select.Where(a => a.USER_TYPE == 1 | a.PASSWORD == "aaa")
  使用 Between and
  AJ.CModel.User.Select.Where(a => a.ID.Between(1,20))
  使用like
  AJ.CModel.User.Select.Where(a => a.ID.Like("%"+2)))
  使用 > ,>=,< <=.......
  AJ.CModel.oll_user.Select.Where(a => a.UUID>10 & a.UUID <= 20 | a.UUID >=20)
  5:选择你需要查询的字段
  使用Column函数进行字段选择   as函数重命名
  只查询NAME一个字段并重名
  IDB.Simple<AJ.Model.User>(AJ.CModel.User.Select.Where(a => a.USER_TYPE == 1 & a.PASSWORD == "aaa").Column(a=>a.PLAYER_NAME.As("name")))
  查询多个字段
  IDB.Simple<AJ.Model.User>(AJ.CModel.User.Select.Where(a => a.USER_TYPE == 1 & a.PASSWORD == "aaa").Column(a=>new[]{a.PLAYER_NAME,a.STATUS,a.PASSWORD}))
  查询字段重命名使用as和写sql重明名得方式一样
  IDB.Simple<AJ.Model.User>(AJ.CModel.User.Select.Where(a => a.USER_TYPE == 1).Column(a=>a.PLAYER_NAME.As("name")))

  6:多表连接查询
  使用 join  ,left join ,right join 函数
  使用 join   gambleOrder连接notice表 条件为 gambleOrder.id =notice.id 写法
  List<gambleOrder> olist = IDB.List<AJ.Model.gambleOrder>(AJ.CModel.oll_user.Select.Join<AJ.CModel.notice>((a, b) => a.id== b.id).Where(a => a.UUID > 10 & a.UUID <= 20 | a.UUID >= 20));
  使用left join   gambleOrder连接notice表 条件为 gambleOrder.id =notice.id 写法
  List<gambleOrder> olist = IDB.List<AJ.Model.gambleOrder>(AJ.CModel.oll_user.Select.LeftJoin<AJ.CModel.notice>((a, b) => a.id== b.id).Where(a => a.UUID > 10 & a.UUID <= 20 | a.UUID >= 20));
  使用right  join   gambleOrder连接notice表条件为是gambleOrder.id =notice.id 写法
  List<gambleOrder> olist = IDB.List<AJ.Model.gambleOrder>(AJ.CModel.oll_user.Select.RightJoin<AJ.CModel.notice>((a, b) => a.id== b.id).Where(a => a.UUID > 10 & a.UUID <= 20 | a.UUID >= 20));
  多表组合连接查询   gambleOrder join notice 在left join Info表
  List<gambleOrder> olist = IDB.List<AJ.Model.gambleOrder>(AJ.CModel.oll_user.Select.Join<AJ.CModel.notice>((a, b) => a.id== b.id).LeftJoin<AJ.CModel.Info>((c, d) => c.id== d.id).Where(a => a.UUID > 10));
  7:常用函数的使用
  直接到字段选择中就可以使用常用的函数,可以随意的进行组合的运算操作
  使用平均函数Avg  
  List<AJ.Model.gambleOrder> go = DataBase.IDB.List<AJ.Model.gambleOrder>(
  AJ.CModel.gambleOrder.Select.Where(a => a.UUID > 10)
  .Column(a=>a.NICK_NAME.Avg));
  使用求和函数Sum
  List<AJ.Model.gambleOrder> go = DataBase.IDB.List<AJ.Model.gambleOrder>(
  AJ.CModel.gambleOrder.Select.Where(a => a.UUID > 10)
  .Column(a=>a.NICK_NAME.Sum));
  组合运算操作  求平均数在计数在除以求和数
  List<AJ.Model.gambleOrder> go = DataBase.IDB.List<AJ.Model.gambleOrder>(
  AJ.CModel.gambleOrder.Select.Where(a => a.UUID > 10)
  .Column(a=>(a.NICK_NAME.Avg*a.PASSWORD.Count)/a.STATUS.Sum));
  8:分组排序
  和数据库的操作习惯一样   使用GroupBy,OrderBy函数
  分组  更具STATUS分组
  List<AJ.Model.gambleOrder> go = DataBase.IDB.List<AJ.Model.gambleOrder>(
  AJ.CModel.gambleOrder.Select.GroupBy(a=>a.STATUS));
  字段分组    更具STATUS和 TYPE分组
  List<AJ.Model.gambleOrder> go = DataBase.IDB.List<AJ.Model.gambleOrder>(
  AJ.CModel.gambleOrder.Select.GroupBy(a=>a.STATUS & a.USER_TYPE));
  排序     更具id降序排序 desc
  List<AJ.Model.gambleOrder> go = DataBase.IDB.List<AJ.Model.gambleOrder>(
  AJ.CModel.gambleOrder.Select.OrderBy(a=>a.ID.desc));
  多字段排序     更具id降序排序 desc ,TYPE升序asc
  List<AJ.Model.gambleOrder> go = DataBase.IDB.List<AJ.Model.gambleOrder>(
  AJ.CModel.gambleOrder.Select.OrderBy(a=>a.ID.desc & a.<span style="font-size:12px; color:#666666">TYPE</span>.asc));
  最能提高的就是自己研究和写点框架与底层的东西,你要去查询了解相关的知识,考虑很多东西,能学到很多平时学不到不常用的知识不断的改进打破重构

posted @ 2014-01-30 12:05 顺其自然EVO 阅读(220) | 评论 (0)编辑 收藏

MySql数据库索引优化注意事项

 设计好MySql的索引可以让你的数据库飞起来,大大的提高数据库效率。设计MySql索引的时候有一下几点注意:
  1,创建索引
  对于查询占主要的应用来说,索引显得尤为重要。很多时候性能问题很简单的就是因为我们忘了添加索引而造成的,或者说没有添加更为有效的索引导致。如果不加索引的话,那么查找任何哪怕只是一条特定的数据都会进行一次全表扫描,如果一张表的数据量很大而符合条件的结果又很少,那么不加索引会引起致命的性能下降。但是也不是什么情况都非得建索引不可,比如性别可能就只有两个值,建索引不仅没什么优势,还会影响到更新速度,这被称为过度索引。
  2,复合索引
  比如有一条语句是这样的:select * from users where area=’beijing’ and age=22;
  如果我们是在area和age上分别创建单个索引的话,由于mysql查询每次只能使用一个索引,所以虽然这样已经相对不做索引时全表扫描提高了很多效率,但是如果在area、age两列上创建复合索引的话将带来更高的效率。如果我们创建了(area, age, salary)的复合索引,那么其实相当于创建了(area,age,salary)、(area,age)、(area)三个索引,这被称为最佳左前缀特性。因此我们在创建复合索引时应该将最常用作限制条件的列放在最左边,依次递减。
  3,索引不会包含有NULL值的列
  只要列中包含有NULL值都将不会被包含在索引中,复合索引中只要有一列含有NULL值,那么这一列对于此复合索引就是无效的。所以我们在数据库设计时不要让字段的默认值为NULL。
  4,使用短索引
  对串列进行索引,如果可能应该指定一个前缀长度。例如,如果有一个CHAR(255)的 列,如果在前10 个或20 个字符内,多数值是惟一的,那么就不要对整个列进行索引。短索引不仅可以提高查询速度而且可以节省磁盘空间和I/O操作。
  5,排序的索引问题
  mysql查询只使用一个索引,因此如果where子句中已经使用了索引的话,那么order by中的列是不会使用索引的。因此数据库默认排序可以符合要求的情况下不要使用排序操作;尽量不要包含多个列的排序,如果需要最好给这些列创建复合索引。
  6,like语句操作
  一般情况下不鼓励使用like操作,如果非使用不可,如何使用也是一个问题。like “%aaa%” 不会使用索引而like “aaa%”可以使用索引。
  7,不要在列上进行运算
  select * from users where YEAR(adddate)<2007;将在每个行上进行运算,这将导致索引失效而进行全表扫描,因此我们可以改成select * from users where adddate<‘2007-01-01’;
  8,不使用NOT IN和<>操作
  NOT IN和<>操作都不会使用索引将进行全表扫描。NOT IN可以NOT EXISTS代替,id<>3则可使用id>3 or id<3来代替。

posted @ 2014-01-30 12:05 顺其自然EVO 阅读(218) | 评论 (0)编辑 收藏

Linux中修改环境变量

  《1》Linux 的变量作用范围可分为两类:环境变量和本地变量
  环境变量,或者称为全局变量,存在与所有的shell 中,在你登陆系统的时候就已经有了相应的系统定义的环境变量了。Linux 的环境变量具有继承性,即子shell 会继承父shell 的环境变量。
  本地变量,当前shell 中的变量,很显然本地变量中肯定包含环境变量。Linux 的本地变量的非环境变量不具备继承性。
  set
  用于显示与设置当前本地 变量。单独一个set 就显示了当前环境的所有的变量,它肯定包括环境变量和一些非环境变量
  unset
  用于清除变量。不管这个变量是环境变量还是本地变量,它都可以清除。
  echo
  查看单个环境变量 echo $PATH
  env
  查看所有环境变量
  export
  设置环境变量
  《2》按变量的生存周期来划分,Linux变量可分为两类:
  1.1 永久的:需要修改配置文件,变量永久生效。
  1.2 临时的:使用export命令声明即可,变量在关闭shell时失效
  永久生效的两种方法
  1   在/etc/profile文件中添加变量【对所有用户生效(永久的)】
  用VI在文件/etc/profile文件中增加变量,该变量将会对Linux下所有用户有效,并且是“永久的”。
  例如:编辑/etc/profile文件,添加CLASSPATH变量
  # vi /etc/profile
  export CLASSPATH=./JAVA_HOME/lib;$JAVA_HOME/jre/lib
  注:修改文件后要想马上生效还要运行# source /etc/profile不然只能在下次重进此用户时生效。
  2   在用户目录下的.bash_profile文件中增加变量【对单一用户生效(永久的)】
  用VI在用户目录下的.bash_profile文件中增加变量,改变量仅会对当前用户有效,并且是“永久的”。
  例如:编辑guok用户目录(/home/guok)下的.bash_profile
  $ vi /home/guok/.bash.profile
  添加如下内容:
  export CLASSPATH=./JAVA_HOME/lib;$JAVA_HOME/jre/lib
  注:修改文件后要想马上生效还要运行$ source /home/guok/.bash_profile不然只能在下次重进此用户时生效

posted @ 2014-01-30 12:05 顺其自然EVO 阅读(320) | 评论 (0)编辑 收藏

Java虚拟机jvm关于内存的设置与调优

JVM内存的设置的原理
  默认的java虚拟机的大小比较小,在对大数据进行处理时java就会报错:java.lang.OutOfMemoryError。
  设置jvm内存的方法,对于单独的.class,可以用下面的方法对Test运行时的jvm内存进行设置。
  java -Xms64m -Xmx256m Test
  -Xms是设置内存初始化的大小
  -Xmx是设置最大能够使用内存的大小(最好不要超过物理内存大小)
  在weblogic中,可以在startweblogic.cmd中对每个domain虚拟内存的大小进行设置,默认的设置是在commEnv.cmd里面。
  JVM内存的调优
  1. Heap设定与垃圾回收Java Heap分为3个区,Young,Old和Permanent。Young保存刚实例化的对象。当该区被填满时,GC会将对象移到Old区。Permanent区则负责保存反射对象,本文不讨论该区。JVM的Heap分配可以使用-X参数设定,
-Xms
初始Heap大小
-Xmx
java heap最大值
-Xmn
young generation的heap大小
  JVM有2个GC线程。第一个线程负责回收Heap的Young区。第二个线程在Heap不足时,遍历Heap,将Young 区升级为Older区。Older区的大小等于-Xmx减去-Xmn,不能将-Xms的值设的过大,因为第二个线程被迫运行会降低JVM的性能。
  为什么一些程序频繁发生GC?有如下原因:
程序内调用了System.gc()或Runtime.gc()。
一些中间件软件调用自己的GC方法,此时需要设置参数禁止这些GC。
Java的Heap太小,一般默认的Heap值都很小。
频繁实例化对象,Release对象。此时尽量保存并重用对象,例如使用StringBuffer()和String()。
  如果你发现每次GC后,Heap的剩余空间会是总空间的50%,这表示你的Heap处于健康状态。许多Server端的Java程序每次GC后最好能有 65%的剩余空间。经验之谈:
  1.Server端JVM最好将-Xms和-Xmx设为相同值。为了优化GC,最好让-Xmn值约等于-Xmx的1/3[2]。
  2.一个GUI程序最好是每10到20秒间运行一次GC,每次在半秒之内完成[2]。
  注意:
  1.增加Heap的大小虽然会降低GC的频率,但也增加了每次GC的时间。并且GC运行时,所有的用户线程将暂停,也就是GC期间,Java应用程序不做任何工作
  2.Heap大小并不决定进程的内存使用量。进程的内存使用量要大于-Xmx定义的值,因为Java为其他任务分配内存,例如每个线程的Stack等。
  2.Stack的设定
  每个线程都有他自己的Stack。
  -Xss
  每个线程的Stack大小
  Stack的大小限制着线程的数量。如果Stack过大就好导致内存溢漏。-Xss参数决定Stack大小,例如-Xss1024K。如果Stack太小,也会导致Stack溢漏。
  3.硬件环境
  硬件环境也影响GC的效率,例如机器的种类,内存,swap空间,和CPU的数量。
  如果你的程序需要频繁创建很多transient对象,会导致JVM频繁GC。这种情况你可以增加机器的内存,来减少Swap空间的使用[2]。
  4.4种GC
  第一种为单线程GC,也是默认的GC。,该GC适用于单CPU机器。
  第二种为Throughput GC,是多线程的GC,适用于多CPU,使用大量线程的程序。第二种GC与第一种GC相似,不同在于GC在收集Young区是多线程的,但在Old区和第一种一样,仍然采用单线程。-XX:+UseParallelGC参数启动该GC。
  第三种为Concurrent Low Pause GC,类似于第一种,适用于多CPU,并要求缩短因GC造成程序停滞的时间。这种GC可以在Old区的回收同时,运行应用程序。-XX:+UseConcMarkSweepGC参数启动该GC。
  第四种为Incremental Low Pause GC,适用于要求缩短因GC造成程序停滞的时间。这种GC可以在Young区回收的同时,回收一部分Old区对象。-Xincgc参数启动该GC。
  4种GC的具体描述参见[3]。

posted @ 2014-01-30 12:04 顺其自然EVO 阅读(521) | 评论 (0)编辑 收藏

Java 追加写入文件

  java中,对文件进行追加内容操作的三种方法!
import java.io.BufferedWriter;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.RandomAccessFile;
//如果文件存在,则追加内容;如果文件不存在,则创建文件,追加内容的三种方法
public class AppendContentToFile {
@SuppressWarnings("static-access")
public static void main(String[] args) {
AppendContentToFile a = new AppendContentToFile();
a.method1();
a.method2("E:\\dd.txt", "222222222222222");
a.method3("E:\\dd.txt", "33333333333");
}
  方法1:
public void method1() {
FileWriter fw = null;
try {
//如果文件存在,则追加内容;如果文件不存在,则创建文件
File f=new File("E:\\dd.txt");
fw = new FileWriter(f, true);
} catch (IOException e) {
e.printStackTrace();
}
PrintWriter pw = new PrintWriter(fw);
pw.println("追加内容");
pw.flush();
try {
fw.flush();
pw.close();
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
}

方法2:
public static void method2(String file, String conent) {
BufferedWriter out = null;
try {
out = new BufferedWriter(new OutputStreamWriter(
new FileOutputStream(file, true)));
out.write(conent+"\r\n");
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
  方法3:
public static void method3(String fileName, String content) {
try {
// 打开一个随机访问文件流,按读写方式
RandomAccessFile randomFile = new RandomAccessFile(fileName, "rw");
// 文件长度,字节数
long fileLength = randomFile.length();
// 将写文件指针移到文件尾。
randomFile.seek(fileLength);
randomFile.writeBytes(content+"\r\n");
randomFile.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}

posted @ 2014-01-30 12:03 顺其自然EVO 阅读(14966) | 评论 (0)编辑 收藏

仅列出标题
共394页: First 上一页 152 153 154 155 156 157 158 159 160 下一页 Last 
<2024年11月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

导航

统计

常用链接

留言簿(55)

随笔分类

随笔档案

文章分类

文章档案

搜索

最新评论

阅读排行榜

评论排行榜