当前位置: 编程技术>移动开发
本页文章导读:
▪如何给http请求添加cookie 怎么给http请求添加cookie
Setting a cookie value in a request:1. Values must be set prior to calling the connect method:URL myUrl = new URL("http://www.hccp.org/cookieTest.jsp");URLConnection urlConn = myUrl.openConnection();2.Create a cooki.........
▪ 显示手机内联系人数量 展示手机内联系人数量
本文属于原创,转载请著名出处:http://flysnow.iteye.com/blog/906770
写道
在我们开发一些如短消息、应用商店等应用时,会考虑在短消息的图标上加上未读短信的数量,在.........
▪ FileUtils 根本文件操作 FileUtils 基本文件操作
【转:】http://blog.163.com/ytrtfhj@126/blog/static/8905310920104624253257/FileUtils.cd( dir, *options )FileUtils.cd( dir, *options ) {|dir| .... }Options: noop verbose移动到dir目录。若被用作迭代器的.........
[1]如何给http请求添加cookie
来源: 互联网 发布时间: 2014-02-18
怎么给http请求添加cookie
Setting a cookie value in a request:
1.
Values must be set prior to calling the connect method:
URL myUrl = new URL("http://www.hccp.org/cookieTest.jsp");
URLConnection urlConn = myUrl.openConnection();
2.
Create a cookie string:
String myCookie = "userId=igbrown";
3.
Add the cookie to a request:
Using the setRequestProperty(String name, String value); method, we will add a property named "Cookie", passing the cookie string created in the previous step as the property value.
urlConn.setRequestProperty("Cookie", myCookie);
4.
Send the cookie to the server:
To send the cookie, simply call connect() on the URLConnection for which we have added the cookie property:
urlConn.connect()
Setting a multiple cookie values in a request:
1.
Perform the same steps as the above item (Setting a a cookie value in a request), replacing the single valued cookie string with something like the following:
String myCookies = "userId=igbrown; sessionId=SID77689211949; isAuthenticated=true";
This string contains three cookies (userId, sessionId, and isAuthenticated). Separate cookie name/value pairs with "; " (semicolon and whitespace).
Note that you cannot set multiple request properties using the same name, so trying to call the setRequestProperty("Cookie" , someCookieValue) method will just overwrite any previously set value.
原文摘自:http://www.hccp.org/java-net-cookie-how-to.html
Setting a cookie value in a request:
1.
Values must be set prior to calling the connect method:
URL myUrl = new URL("http://www.hccp.org/cookieTest.jsp");
URLConnection urlConn = myUrl.openConnection();
2.
Create a cookie string:
String myCookie = "userId=igbrown";
3.
Add the cookie to a request:
Using the setRequestProperty(String name, String value); method, we will add a property named "Cookie", passing the cookie string created in the previous step as the property value.
urlConn.setRequestProperty("Cookie", myCookie);
4.
Send the cookie to the server:
To send the cookie, simply call connect() on the URLConnection for which we have added the cookie property:
urlConn.connect()
Setting a multiple cookie values in a request:
1.
Perform the same steps as the above item (Setting a a cookie value in a request), replacing the single valued cookie string with something like the following:
String myCookies = "userId=igbrown; sessionId=SID77689211949; isAuthenticated=true";
This string contains three cookies (userId, sessionId, and isAuthenticated). Separate cookie name/value pairs with "; " (semicolon and whitespace).
Note that you cannot set multiple request properties using the same name, so trying to call the setRequestProperty("Cookie" , someCookieValue) method will just overwrite any previously set value.
原文摘自:http://www.hccp.org/java-net-cookie-how-to.html
[2] 显示手机内联系人数量
来源: 互联网 发布时间: 2014-02-18
展示手机内联系人数量
手机内依据Uri查看联系人
权限的添加
获取手机内任意一款应用的应用图标
对图形的处理,如复制,为图片加上覆盖层--数字。
使用RemoteView自定义Notification
二:开始行动
新建名为NotificationIconCount的Android Project。附件中有最终版本的项目工程
首先修改AndroidManifest.xml,加入权限<uses-permission android:name="android.permission.READ_CONTACTS"></uses-permission>,因为我们要读取联系人。
修改main.xml如下,这里定义一个ImageView,勇于预览我们处理好的加上数字的图标。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<ImageView
android:id="@+id/icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:scaleType="center"
android:adjustViewBounds="true"/>
</LinearLayout>
先来获取手机内通讯录的图标,如果没有获取到,则使用该应用的图标.
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mImageView=(ImageView)findViewById(R.id.icon);
//优先采用联系人的图标,如果不存在则采用该应用的图标
Drawable contactIcon;
try {
contactIcon = getPackageManager().getApplicationIcon("com.android.contacts");
} catch (NameNotFoundException e) {
contactIcon=null;
}
Bitmap icon;
if(contactIcon instanceof BitmapDrawable){
icon=((BitmapDrawable)contactIcon).getBitmap();
}else{
icon=getResIcon(getResources(), R.id.icon);
}
/**
* 根据id获取一个图片
* @param res
* @param resId
* @return
*/
private Bitmap getResIcon(Resources res,int resId){
Drawable icon=res.getDrawable(resId);
if(icon instanceof BitmapDrawable){
BitmapDrawable bd=(BitmapDrawable)icon;
return bd.getBitmap();
}else{
return null;
}
}
获取到图标之后就要对这个图标进行处理了,要为该图标加上联系人数量的覆盖,首先我们看获取联系人个数的函数。
/**
* 获取联系人的个数
* @return 手里通讯录中联系人的个数
*/
private int getContactCount(){
Cursor c=getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, new String[]{ContactsContract.Contacts._COUNT}, null, null, null);
try{
c.moveToFirst();
return c.getInt(0);
}catch(Exception e){
return 0;
}finally{
c.close();
}
}
有了图标和联系人个数就可以生成带联系人个数的图标了,我们看下生成的这个函数。
/**
* 在给定的图片的右上角加上联系人数量。数量用红色表示
* @param icon 给定的图片
* @return 带联系人数量的图片
*/
private Bitmap generatorContactCountIcon(Bitmap icon){
//初始化画布
int iconSize=(int)getResources().getDimension(android.R.dimen.app_icon_size);
Log.d(TAG, "the icon size is "+iconSize);
Bitmap contactIcon=Bitmap.createBitmap(iconSize, iconSize, Config.ARGB_8888);
Canvas canvas=new Canvas(contactIcon);
//拷贝图片
Paint iconPaint=new Paint();
iconPaint.setDither(true);//防抖动
iconPaint.setFilterBitmap(true);//用来对Bitmap进行滤波处理,这样,当你选择Drawable时,会有抗锯齿的效果
Rect src=/blog_article/new Rect/index.html(0, 0, icon.getWidth(), icon.getHeight());
Rect dst=new Rect(0, 0, iconSize, iconSize);
canvas.drawBitmap(icon, src, dst, iconPaint);
//在图片上创建一个覆盖的联系人个数
int contacyCount=getContactCount();
//启用抗锯齿和使用设备的文本字距
Paint countPaint=new Paint(Paint.ANTI_ALIAS_FLAG|Paint.DEV_KERN_TEXT_FLAG);
countPaint.setColor(Color.RED);
countPaint.setTextSize(20f);
countPaint.setTypeface(Typeface.DEFAULT_BOLD);
canvas.drawText(String.valueOf(contacyCount), iconSize-18, 25, countPaint);
return contactIcon;
}
然后我们把得到的这个处理过的Bitmap放在我们在main.xml里定义的ImageView里展示就可以看到效果了.
mImageView.setImageBitmap(contactCountIcon);
我们启动应用看看效果.
我们看到了,右上角红色的1代表我手机中有一个联系人
三:采用状态栏通知的办法展示联系人的数量
如果我们监听未读短信的数量,展示在状态栏通知了,就可以用这个方法,我这里还是以联系人的数量为例
由于Notification默认的icon字段使用的是一个一个资源的引用类型int,所以我们这里采用RemoteView的方式自定义Notification。定义RemoteView,需要一个layout,用于定义展示的Notification样式,我们新建一个notification.xml布局文件如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="3dp"
>
<ImageView android:id="@+id/image"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_marginRight="10dp"
/>
<TextView android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:textColor="#000"
/>
</LinearLayout>
要想使用Notification,我们必须获取一个Service--NotificationManager,Android中由它来管理我们的Notification,获取NotificationManager的代码如下,卸载onCreate方法里
nm=(NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
然后紧接着我们就调用我们定义好的方法来显示通知:
showNotifacation(contactCountIcon);
下面我们看一下方法showNotifacation的具体实现:
/**
* 显示状态栏通知
* @param icon 通知内容图标
*/
private void showNotifacation(Bitmap icon){
Notification notification=new Notification(R.drawable.icon,"联系人数量",System.currentTimeMillis());
//使用RemoteView自定义通知视图
RemoteViews contentView=new RemoteViews(getPackageName(), R.layout.notification);
contentView.setImageViewBitmap(R.id.image, icon);
contentView.setTextViewText(R.id.text, "图标上的红色数字表示手机中联系人的数量");
notification.contentView=contentView;
Intent notificationIntent=new Intent(this, NotificationIconActivity.class);
PendingIntent contentIntent=PendingIntent.getActivity(this, 0, notificationIntent, 0);
notification.contentIntent=contentIntent;
nm.notify(NOTIFICATION_CONTACT_ID, notification);
}
最后的就是重写onDestroy,在Android销毁该Activity的时候清除我们的通知。
@Override
protected void onDestroy() {
super.onDestroy();
nm.cancel(NOTIFICATION_CONTACT_ID);
}
运行,可以看到如下效果
可以看到,效果已经出来了。。
四:小结和一点引申
本文属于原创,转载请著名出处:http://flysnow.iteye.com/blog/906770
写道
在我们开发一些如短消息、应用商店等应用时,会考虑在短消息的图标上加上未读短信的数量,在应用商店上加上可以升级的应用数量,这样不占太大空间还能达到提示的目的。
本节就以一个展示手机内联系人数量的例子来演示怎么在一个图标的上面加上数字的例子,也就是一个数字overlay..做过google map开发的知道overlay这个东西。。
一:你可学到
本节就以一个展示手机内联系人数量的例子来演示怎么在一个图标的上面加上数字的例子,也就是一个数字overlay..做过google map开发的知道overlay这个东西。。
Xml代码
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <ImageView android:id="@+id/icon" android:layout_width="wrap_content" android:layout_height="wrap_content" android:scaleType="center" android:adjustViewBounds="true"/> </LinearLayout>
Java代码
super.onCreate(savedInstanceState); setContentView(R.layout.main); mImageView=(ImageView)findViewById(R.id.icon); //优先采用联系人的图标,如果不存在则采用该应用的图标 Drawable contactIcon; try { contactIcon = getPackageManager().getApplicationIcon("com.android.contacts"); } catch (NameNotFoundException e) { contactIcon=null; } Bitmap icon; if(contactIcon instanceof BitmapDrawable){ icon=((BitmapDrawable)contactIcon).getBitmap(); }else{ icon=getResIcon(getResources(), R.id.icon); }这里用到一个自定义的根据资源图标id获取图片的函数,很简单,代码如下:
Java代码
/** * 根据id获取一个图片 * @param res * @param resId * @return */ private Bitmap getResIcon(Resources res,int resId){ Drawable icon=res.getDrawable(resId); if(icon instanceof BitmapDrawable){ BitmapDrawable bd=(BitmapDrawable)icon; return bd.getBitmap(); }else{ return null; } }
Java代码
/** * 获取联系人的个数 * @return 手里通讯录中联系人的个数 */ private int getContactCount(){ Cursor c=getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, new String[]{ContactsContract.Contacts._COUNT}, null, null, null); try{ c.moveToFirst(); return c.getInt(0); }catch(Exception e){ return 0; }finally{ c.close(); } }这里采用Uri的方式获取联系人的cursor,然后获取个数。
Java代码
/** * 在给定的图片的右上角加上联系人数量。数量用红色表示 * @param icon 给定的图片 * @return 带联系人数量的图片 */ private Bitmap generatorContactCountIcon(Bitmap icon){ //初始化画布 int iconSize=(int)getResources().getDimension(android.R.dimen.app_icon_size); Log.d(TAG, "the icon size is "+iconSize); Bitmap contactIcon=Bitmap.createBitmap(iconSize, iconSize, Config.ARGB_8888); Canvas canvas=new Canvas(contactIcon); //拷贝图片 Paint iconPaint=new Paint(); iconPaint.setDither(true);//防抖动 iconPaint.setFilterBitmap(true);//用来对Bitmap进行滤波处理,这样,当你选择Drawable时,会有抗锯齿的效果 Rect src=/blog_article/new/index.html Rect(0, 0, icon.getWidth(), icon.getHeight()); Rect dst=new Rect(0, 0, iconSize, iconSize); canvas.drawBitmap(icon, src, dst, iconPaint); //在图片上创建一个覆盖的联系人个数 int contacyCount=getContactCount(); //启用抗锯齿和使用设备的文本字距 Paint countPaint=new Paint(Paint.ANTI_ALIAS_FLAG|Paint.DEV_KERN_TEXT_FLAG); countPaint.setColor(Color.RED); countPaint.setTextSize(20f); countPaint.setTypeface(Typeface.DEFAULT_BOLD); canvas.drawText(String.valueOf(contacyCount), iconSize-18, 25, countPaint); return contactIcon; }注释的很详细,就不解释了,无非就是定义一个画布(Canvas),然后在上面画图标,画数字文本。
Java代码
mImageView.setImageBitmap(contactCountIcon);
我们看到了,右上角红色的1代表我手机中有一个联系人
Java代码
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="fill_parent" android:padding="3dp" > <ImageView android:id="@+id/image" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_marginRight="10dp" /> <TextView android:id="@+id/text" android:layout_width="wrap_content" android:layout_height="fill_parent" android:textColor="#000" /> </LinearLayout>很简单,一个ImageView和一个TextView,用于显示提示的图标和文字。
Java代码
nm=(NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
Java代码
showNotifacation(contactCountIcon);
Java代码
/** * 显示状态栏通知 * @param icon 通知内容图标 */ private void showNotifacation(Bitmap icon){ Notification notification=new Notification(R.drawable.icon,"联系人数量",System.currentTimeMillis()); //使用RemoteView自定义通知视图 RemoteViews contentView=new RemoteViews(getPackageName(), R.layout.notification); contentView.setImageViewBitmap(R.id.image, icon); contentView.setTextViewText(R.id.text, "图标上的红色数字表示手机中联系人的数量"); notification.contentView=contentView; Intent notificationIntent=new Intent(this, NotificationIconActivity.class); PendingIntent contentIntent=PendingIntent.getActivity(this, 0, notificationIntent, 0); notification.contentIntent=contentIntent; nm.notify(NOTIFICATION_CONTACT_ID, notification); }注释的都很详细,就不一一解释了
Java代码
@Override protected void onDestroy() { super.onDestroy(); nm.cancel(NOTIFICATION_CONTACT_ID); }
可以看到,效果已经出来了。。
这结的主要关键还是对图片的处理,比如这里的加上数字,当时你也可以加上其他的东西,Canvas里有很多相应的函数可以使用。。
这里说的都是应用内、状态通知等一些显示处理后图片的办法,那么有没有方法处理手机主屏幕上的图标的办法,为他们加上数字呢。比如在短信息的应用图标的右上角加上未读短信数目等,答案是有的,不过是迂回实现的,给个思路就是使用AppWidget,这个可以实现,还能动态更新,具体怎么实现,大家可以自己摸索下,这里只提供个思路,整体和这节的例子差不多,只不过呢,要做成AppWidget。。。
[3] FileUtils 根本文件操作
来源: 互联网 发布时间: 2014-02-18
FileUtils 基本文件操作
【转:】
http://blog.163.com/ytrtfhj@126/blog/static/8905310920104624253257/FileUtils.cd( dir, *options )
FileUtils.cd( dir, *options ) {|dir| .... }
Options: noop verbose移动到dir目录。若被用作迭代器的话, 将在块停止工作之后返回原来的目录。 FileUtils.cd '/', :verbose # chdir and report it
FileUtils.uptodate?( newer, older_list, *options )
Options: verbose若newer比older_list中的任何文件都新的话,就返回真。不存在的文件会被看做是最老的文件。 FileUtils.newest? 'hello.o', 'hello.c', 'hello.h' or system 'make'
FileUtils.mkdir( dir, *options )
Options: noop verbose生成dir目录 。 FileUtils.mkdir 'test' FileUtils.mkdir %w( tmp data ) FileUtils.mkdir 'notexist', :noop # does not create really
FileUtils.mkdir_p( dir, *options )
Options: noop verbose将生成dir目录及其所有上级目录。例如 FileUtils.mkdir_p '/usr/local/lib/ruby'将生成下列所有目录(若没有的话)。 * /usr * /usr/local * /usr/local/bin * /usr/local/bin/ruby
FileUtils.rmdir( dir, *options )
Options: noop, verboseremoves directory DIR. FileUtils.rmdir 'somedir' FileUtils.rmdir %w(somedir anydir otherdir) # does not remove directory really, outputing message. FileUtils.rmdir 'somedir', :verbose, :noop
FileUtils.ln( old, new, *options )
Options: force noop verbose生成指向old的硬连接new 。若new已存在且为目录时,生成new/old 。若new已存在且不是目录的话,会引发Errno::ENOTDIR异常。但是若指定了force选项的话,就会覆盖new。 FileUtils.ln 'gcc', 'cc', :verbose FileUtils.ln '/usr/bin/emacs21', '/usr/bin/emacs'
FileUtils.ln( list, destdir, *options )
Options: force noop verbose生成指向list[0]的硬连接destdir/list[0]和指向list[1]的硬连接destdir/list[1]...。若destdir不是目录的话, 将引发Errno::ENOTDIR异常。 include FileUtils cd '/bin' ln %w(cp mv mkdir), '/usr/bin'
FileUtils.ln_s( old, new, *options )
Options: force noop verbose生成指向old的符号连接new 。若new已存在且为目录时,生成new/old 。若new已存在且不是目录的话,会引发Errno::ENOTDIR异常。但是若指定了force选项的话,就会覆盖new。 FileUtils.ln_s '/usr/bin/ruby', '/usr/local/bin/ruby' FileUtils.ln_s 'verylongsourcefilename.c', 'c', :force
FileUtils.ln_s( list, destdir, *options )
Options: force noop verbose生成指向list[0]、list[1]...的符号连接 dir/list[0], dir/list[1]...。若destdir不是目录的话,将引发 Errno::ENOTDIR异常。生成指向list[0]的符号连接 destdir/list[0]和指向list[1]的符号连接destdir/list[1]...。若destdir不是目录时,将引发Errno::ENOTDIR异常。 FileUtils.ln_s Dir.glob('bin/*.rb'), '/home/aamine/bin'
FileUtils.ln_sf( src, dest, *options )
Options: noop verbose与ln_s(src,dest,:force)相同。
FileUtils.cp( src, dest, *options )
Options: preserve noop verbose将文件src拷贝到dest。若dest是目录的话,就拷贝到dest/src。若dest早已存在且并非目录时将进行覆盖。 FileUtils.cp 'eval.c', 'eval.c.org'
FileUtils.cp( list, dir, *options )
Options: preserve noop verbose把file1拷贝到dir/file1,把file2拷贝到dir/file2,就这样将file1、file2以相同的文件名拷贝到dir目录。若dir并非目录时, 会引发Errno::ENOTDIR异常。 FileUtils.cp 'cgi.rb', 'complex.rb', 'date.rb', '/usr/lib/ruby/1.6' FileUtils.cp :verbose, %w(cgi.rb complex.rb date.rb), '/usr/lib/ruby/1.6'
FileUtils.cp_r( src, dest, *options )
Options: preserve noop verbose将src拷贝到dest。若src是目录则进行递归式的拷贝。此时若dest是目录,则拷贝到dest/src。 # installing ruby library "mylib" under the site_ruby FileUtils.rm_r site_ruby + '/mylib', :force FileUtils.cp_r 'lib/', site_ruby + '/mylib'
FileUtils.cp_r( list, dir, *options )
Options: preserve noop verbose将list[0]、list[1], list[2]...等拷贝到dir目录中.若list[n]是目录的话,就进行递归式的拷贝。 FileUtils.cp_r %w(mail.rb field.rb debug/) site_ruby + '/tmail' FileUtils.cp_r Dir.glob('*.rb'), '/home/aamine/lib/ruby', :noop, :verbose
FileUtils.mv( src, dest, *options )
Options: noop verbose将from移动直to。若to是目录,就移动到to/from。若给出了3个以上的参数时, 将把其他文件移动到dir目录中。 FileUtils.mv 'badname.rb', 'goodname.rb' FileUtils.mv 'stuff.rb', 'lib/ruby', :force
FileUtils.mv( list, dir, *options )
Options: noop verbose将file1 file2...移动到dir/file1 dir/file2...若进行跨区移动时,则进行拷贝。 FileUtils.mv 'junk.txt', 'dust.txt', '/home/aamine/.trash/' FileUtils.mv Dir.glob('test*.rb'), 'T', :noop, :verbose
FileUtils.rm( list, *options )
Options: force noop verbose删除list[0]、list[1]...。若指定了:force 选项的话,则会忽略操作过程中所有的StandardError。 FileUtils.rm %w( junk.txt dust.txt ) FileUtils.rm Dir['*.so'] FileUtils.rm 'NotExistFile', :force # never raises exception
FileUtils.rm_r( list, *options )
Options: force noop verbose删除list[0], list[1]...文件或目录.若使用了force选项时,将忽略StandardError。 FileUtils.rm_r Dir.glob('/tmp/*') FileUtils.rm_r '/', :force # :-)
FileUtils.rm_rf( list, *options )
Options: noop verbosesame to rm_r(list,:force)
FileUtils.cmp( file_a, file_b, *options )
Options: verbose若文件a和文件b的内容相同, 则返回真。 FileUtils.cmp 'somefile', 'somefile' #=> true FileUtils.cmp '/bin/cp', '/bin/mv' #=> maybe false.
FileUtils.install( src, dest, mode = <src's>, *options )
Options: noop verbose若from与to内容不同时,才会将from拷贝到to。此时会将模式设为mode。 FileUtils.install 'ruby', '/usr/local/bin/ruby', 0755, :verbose FileUtils.install 'lib.rb', '/usr/local/lib/ruby/site_ruby', :verbose
FileUtils.chmod( mode, list, *options )
Options: noop verbose将文件LIST[0]、LIST[1]...的permission变为mode. FileUtils.chmod 0644, 'my.rb', 'your.rb' FileUtils.chmod 0755, 'somecommand' FileUtils.chmod 0755, '/usr/bin/ruby', :verbose
FileUtils.touch( list, *options )
Options: noop verbose更新list[0], list[1]...的最终修改时间(mtime)和访问时间(atime).若list[n]并不存在时,就生成空文件。 FileUtils.touch 'timestamp' FileUtils.touch Dir.glob('*.c'); system 'make'
【转:】
http://blog.163.com/ytrtfhj@126/blog/static/8905310920104624253257/FileUtils.cd( dir, *options )
FileUtils.cd( dir, *options ) {|dir| .... }
Options: noop verbose移动到dir目录。若被用作迭代器的话, 将在块停止工作之后返回原来的目录。 FileUtils.cd '/', :verbose # chdir and report it
FileUtils.uptodate?( newer, older_list, *options )
Options: verbose若newer比older_list中的任何文件都新的话,就返回真。不存在的文件会被看做是最老的文件。 FileUtils.newest? 'hello.o', 'hello.c', 'hello.h' or system 'make'
FileUtils.mkdir( dir, *options )
Options: noop verbose生成dir目录 。 FileUtils.mkdir 'test' FileUtils.mkdir %w( tmp data ) FileUtils.mkdir 'notexist', :noop # does not create really
FileUtils.mkdir_p( dir, *options )
Options: noop verbose将生成dir目录及其所有上级目录。例如 FileUtils.mkdir_p '/usr/local/lib/ruby'将生成下列所有目录(若没有的话)。 * /usr * /usr/local * /usr/local/bin * /usr/local/bin/ruby
FileUtils.rmdir( dir, *options )
Options: noop, verboseremoves directory DIR. FileUtils.rmdir 'somedir' FileUtils.rmdir %w(somedir anydir otherdir) # does not remove directory really, outputing message. FileUtils.rmdir 'somedir', :verbose, :noop
FileUtils.ln( old, new, *options )
Options: force noop verbose生成指向old的硬连接new 。若new已存在且为目录时,生成new/old 。若new已存在且不是目录的话,会引发Errno::ENOTDIR异常。但是若指定了force选项的话,就会覆盖new。 FileUtils.ln 'gcc', 'cc', :verbose FileUtils.ln '/usr/bin/emacs21', '/usr/bin/emacs'
FileUtils.ln( list, destdir, *options )
Options: force noop verbose生成指向list[0]的硬连接destdir/list[0]和指向list[1]的硬连接destdir/list[1]...。若destdir不是目录的话, 将引发Errno::ENOTDIR异常。 include FileUtils cd '/bin' ln %w(cp mv mkdir), '/usr/bin'
FileUtils.ln_s( old, new, *options )
Options: force noop verbose生成指向old的符号连接new 。若new已存在且为目录时,生成new/old 。若new已存在且不是目录的话,会引发Errno::ENOTDIR异常。但是若指定了force选项的话,就会覆盖new。 FileUtils.ln_s '/usr/bin/ruby', '/usr/local/bin/ruby' FileUtils.ln_s 'verylongsourcefilename.c', 'c', :force
FileUtils.ln_s( list, destdir, *options )
Options: force noop verbose生成指向list[0]、list[1]...的符号连接 dir/list[0], dir/list[1]...。若destdir不是目录的话,将引发 Errno::ENOTDIR异常。生成指向list[0]的符号连接 destdir/list[0]和指向list[1]的符号连接destdir/list[1]...。若destdir不是目录时,将引发Errno::ENOTDIR异常。 FileUtils.ln_s Dir.glob('bin/*.rb'), '/home/aamine/bin'
FileUtils.ln_sf( src, dest, *options )
Options: noop verbose与ln_s(src,dest,:force)相同。
FileUtils.cp( src, dest, *options )
Options: preserve noop verbose将文件src拷贝到dest。若dest是目录的话,就拷贝到dest/src。若dest早已存在且并非目录时将进行覆盖。 FileUtils.cp 'eval.c', 'eval.c.org'
FileUtils.cp( list, dir, *options )
Options: preserve noop verbose把file1拷贝到dir/file1,把file2拷贝到dir/file2,就这样将file1、file2以相同的文件名拷贝到dir目录。若dir并非目录时, 会引发Errno::ENOTDIR异常。 FileUtils.cp 'cgi.rb', 'complex.rb', 'date.rb', '/usr/lib/ruby/1.6' FileUtils.cp :verbose, %w(cgi.rb complex.rb date.rb), '/usr/lib/ruby/1.6'
FileUtils.cp_r( src, dest, *options )
Options: preserve noop verbose将src拷贝到dest。若src是目录则进行递归式的拷贝。此时若dest是目录,则拷贝到dest/src。 # installing ruby library "mylib" under the site_ruby FileUtils.rm_r site_ruby + '/mylib', :force FileUtils.cp_r 'lib/', site_ruby + '/mylib'
FileUtils.cp_r( list, dir, *options )
Options: preserve noop verbose将list[0]、list[1], list[2]...等拷贝到dir目录中.若list[n]是目录的话,就进行递归式的拷贝。 FileUtils.cp_r %w(mail.rb field.rb debug/) site_ruby + '/tmail' FileUtils.cp_r Dir.glob('*.rb'), '/home/aamine/lib/ruby', :noop, :verbose
FileUtils.mv( src, dest, *options )
Options: noop verbose将from移动直to。若to是目录,就移动到to/from。若给出了3个以上的参数时, 将把其他文件移动到dir目录中。 FileUtils.mv 'badname.rb', 'goodname.rb' FileUtils.mv 'stuff.rb', 'lib/ruby', :force
FileUtils.mv( list, dir, *options )
Options: noop verbose将file1 file2...移动到dir/file1 dir/file2...若进行跨区移动时,则进行拷贝。 FileUtils.mv 'junk.txt', 'dust.txt', '/home/aamine/.trash/' FileUtils.mv Dir.glob('test*.rb'), 'T', :noop, :verbose
FileUtils.rm( list, *options )
Options: force noop verbose删除list[0]、list[1]...。若指定了:force 选项的话,则会忽略操作过程中所有的StandardError。 FileUtils.rm %w( junk.txt dust.txt ) FileUtils.rm Dir['*.so'] FileUtils.rm 'NotExistFile', :force # never raises exception
FileUtils.rm_r( list, *options )
Options: force noop verbose删除list[0], list[1]...文件或目录.若使用了force选项时,将忽略StandardError。 FileUtils.rm_r Dir.glob('/tmp/*') FileUtils.rm_r '/', :force # :-)
FileUtils.rm_rf( list, *options )
Options: noop verbosesame to rm_r(list,:force)
FileUtils.cmp( file_a, file_b, *options )
Options: verbose若文件a和文件b的内容相同, 则返回真。 FileUtils.cmp 'somefile', 'somefile' #=> true FileUtils.cmp '/bin/cp', '/bin/mv' #=> maybe false.
FileUtils.install( src, dest, mode = <src's>, *options )
Options: noop verbose若from与to内容不同时,才会将from拷贝到to。此时会将模式设为mode。 FileUtils.install 'ruby', '/usr/local/bin/ruby', 0755, :verbose FileUtils.install 'lib.rb', '/usr/local/lib/ruby/site_ruby', :verbose
FileUtils.chmod( mode, list, *options )
Options: noop verbose将文件LIST[0]、LIST[1]...的permission变为mode. FileUtils.chmod 0644, 'my.rb', 'your.rb' FileUtils.chmod 0755, 'somecommand' FileUtils.chmod 0755, '/usr/bin/ruby', :verbose
FileUtils.touch( list, *options )
Options: noop verbose更新list[0], list[1]...的最终修改时间(mtime)和访问时间(atime).若list[n]并不存在时,就生成空文件。 FileUtils.touch 'timestamp' FileUtils.touch Dir.glob('*.c'); system 'make'
最新技术文章: