001/* 002 * (C) Copyright 2006-2010 Nuxeo SAS (http://nuxeo.com/) and contributors. 003 * 004 * All rights reserved. This program and the accompanying materials 005 * are made available under the terms of the GNU Lesser General Public License 006 * (LGPL) version 2.1 which accompanies this distribution, and is available at 007 * http://www.gnu.org/licenses/lgpl.html 008 * 009 * This library is distributed in the hope that it will be useful, 010 * but WITHOUT ANY WARRANTY; without even the implied warranty of 011 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 012 * Lesser General Public License for more details. 013 * 014 * Contributors: 015 * bstefanescu 016 */ 017package org.nuxeo.shell.fs.cmds; 018 019import java.io.File; 020import java.io.FileOutputStream; 021import java.io.IOException; 022import java.io.OutputStream; 023 024import org.nuxeo.shell.Argument; 025import org.nuxeo.shell.Command; 026import org.nuxeo.shell.Context; 027import org.nuxeo.shell.Shell; 028 029/** 030 * @author <a href="mailto:bs@nuxeo.com">Bogdan Stefanescu</a> 031 */ 032@Command(name = "touch", help = "Touch a file") 033public class Touch implements Runnable { 034 035 @Context 036 protected Shell shell; 037 038 @Argument(name = "file", index = 0, required = true, help = "The file to touch") 039 protected File file; 040 041 public void run() { 042 file.getParentFile().mkdirs(); 043 if (!file.exists()) { 044 OutputStream out = null; 045 try { 046 try { 047 out = new FileOutputStream(file); 048 } finally { 049 if (out != null) { 050 out.close(); 051 } 052 } 053 } catch (IOException e) { 054 e.printStackTrace(); 055 } 056 } else { 057 file.setLastModified(System.currentTimeMillis()); 058 } 059 } 060 061}