From owner-java@jp.FreeBSD.org Thu Apr 10 22:03:21 2003
Received: (from daemon@localhost)
	by castle.jp.FreeBSD.org (8.11.6p2+3.4W/8.11.3) id h3AD3Lq38650;
	Thu, 10 Apr 2003 22:03:21 +0900 (JST)
	(envelope-from owner-java@jp.FreeBSD.org)
Received: from ongs.co.jp (ns.ongs.co.jp [202.216.232.58])
	by castle.jp.FreeBSD.org (8.11.6p2+3.4W/8.11.3) with SMTP/inet id h3AD3LY38645
	for <java@jp.FreeBSD.org>; Thu, 10 Apr 2003 22:03:21 +0900 (JST)
	(envelope-from daichi@jp.freebsd.org)
Received: (qmail 42882 invoked from network); 10 Apr 2003 13:04:43 -0000
Received: from unknown (HELO parancell.ongs.co.jp) (202.216.232.62)
  by ns.ongs.co.jp with SMTP; 10 Apr 2003 13:04:43 -0000
From: daichi <daichi@jp.FreeBSD.org>
To: java@jp.FreeBSD.org
Message-Id: <20030410220157.15081485.daichi@jp.freebsd.org>
Organization: FreeBSD Project(Japan)
X-Mailer: Sylpheed version 0.8.11 (GTK+ 1.2.10; i386-portbld-freebsd5.0)
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-2022-JP
Content-Transfer-Encoding: 7bit
Reply-To: java@jp.FreeBSD.org
Precedence: list
Date: Thu, 10 Apr 2003 22:01:57 +0900
X-Sequence: java 340
Subject: [java 340] RandomAccessFile =?ISO-2022-JP?B?GyRCJEgbKEI=?=
 ftruncate
Sender: owner-java@jp.FreeBSD.org
X-Originator: daichi@jp.FreeBSD.org
X-Distribute: distribute version 2.1 (Alpha) patchlevel 24e+030405

$BBgCO$G$9!#(B

$BD4$Y$F$b%$%^%$%AM}2r$G$-$J$+$C$?$N$G$I$J$?$+%"%I%P%$%9$/$@$5$$$^$;!#(B

JDC$B$rFI$s$G$$$F5$$K$J$C$?$N$G(BRandomAccessFile$B$r;H$C$F(B1GB$B$N%U%!%$%k$r(B
$B$r@8@.$7$F$_$^$7$?!#(B

  import java.io.*;

  public class FileSize
  {
      public static void main(String[] a)
          throws Exception
      {
          File target = new File("testfile");
          target.delete();
          target.createNewFile();

          RandomAccessFile raf = new RandomAccessFile(target, "rw");
          raf.setLength(1073741824);
          //raf.setLength(100);

          raf.close();	
      }
  }

100$B$G$b(B104857600$B$G$b%U%!%$%k@8@.$K$+$+$k;~4V$,$[$H$s$I$+$o$i$J$$(B
$B$N$G5$$K$J$C$F%=!<%9%3!<%I$rDI$C$F$$$C$?$i!":G=*E*$K(Bftruncate$B$,(B
$B8F$P$l$F$$$k$_$?$$$G$7$?!#(B

  int
  ftruncate(fd, length)
          int     fd;
          off_t   length;
  {

          return(__syscall((quad_t)SYS_ftruncate, fd, 0, length));
  }

RandomAccessFile#setLength()$B$O:G=*E*$K$3$s$J46$8$G<B9T$5$l$F$k(B
$B$3$H$K$J$k$h$&$G$9!#(B

  #include <stdio.h>
  #include <unistd.h>

  int
  main(void)
  {
    FILE *fp = fopen("test", "w");

    ftruncate(fileno(fp), 1073741824);

    //truncate("test", 1073741824);

    return 0;
  }

$B5$$K$J$C$?$N$O$3$NF0:n7k2L$G$9!#(B
ftruncate$B$G%U%!%$%k$N%5%$%:$r(B1G$B$K@_Dj$7$F$b!"(Bdf$B%3%^%s%I$N=PNO(B
$B7k2L$,$[$H$s$IJQ$o$i$J$$$s$G$9$h!#(B

  > ll -h | grep test
  -rw-r--r--  1 daichi  wheel  178B  4 10 21:37 ftruncatetest.c
  > df | grep /usr
  /dev/ad0s1f                    37779234  7919200 26837696    23%    /usr
  > gcc ftruncatetest.c
  > ./a.out 
  > ll -h | grep test
  -rw-r--r--  1 daichi  wheel        178B  4 10 21:37 ftruncatetest.c
  -rw-r--r--  1 daichi  wheel        1.0G  4 10 21:42 test
  > df | grep /usr
  /dev/ad0s1f                    37779234  7919248 26837648    23%    /usr
  > du test
  48      test
  > 

1G$BJ,$,%,%j%,%j:n@.$5$l$k$+$H;W$C$F$$$?$N$G$9$,$9$0$K=hM}$,=*$o$C(B
$B$F$F!#(B

$B;n$7$K:n@.$7$?(B1G$B$N%U%!%$%k$K!"8e$+$i(Bdd$B%3%^%s%I$G(B1M$B$N$"$?$j$K%G!<(B
$B%?$r=q$-9~$s$@$i!"%U%!%$%k%5%$%:$,(B1M$B$K$J$j$^$7$?!#(B
df$B$N7k2L$OAjJQ$o$i$:$[$H$s$I$+$o$i$:!#(B

  > cat hoge
  daichidaichidaichi
  > dd if=hoge of=test seek=1024 bs=1024
  0+1 records in
  0+1 records out
  19 bytes transferred in 0.000346 secs (54922 bytes/sec)
  > ll -h | grep test
  -rw-r--r--  1 daichi  wheel     178B  4 10 21:37 ftruncatetest.c
  -rw-r--r--  1 daichi  wheel     1.0M  4 10 21:45 test
  > df | grep /usr
  /dev/ad0s1f                    37779234  7919232 26837664    23%    /usr
  > du test
  32      test
  > du hoge
  2       hoge
  > 

$B%U%!%$%k%5%$%:$,(B1M$B$K$J$C$?$N$O(Bdd$B%3%^%s%I$NF0:n$G$7$g$&!#$H$$$&(B
$B$3$H$G(BJava$B$N%3!<%I$NJ}$G(B

      raf.seek(104857600L);

      raf.write(1);
	
      raf.close();	

$B$rDI2C$7$F<B9T$7$?$i$d$C$Q$j%U%!%$%k%5%$%:$O(B1G$B$N$^$^!#(B

  > hd testfile 
  00000000  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
  *
  06400000  01 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
  06400010  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
  *
  40000000
  > du testfile
  80      testfile
  > 

hd$B$N<B9T$K$7$P$i$/;~4V$,$+$+$k$N$G!"$?$7$+$K$=$3$K(B1G$B$O$"$k$h$&$J(B
$B46$8$G$9!#(B
$B$G$b$C$FAjJQ$o$i$:%G%#%9%/$N>CHq%5%$%:$O$[$H$s$IJQ$i$:!#(B

  > du testfile
  80      testfile
  > 

$B$s!A!)(B

$B$3$l$C$F(BFreeBSD$B$N%U%!%$%k%7%9%F%`FCM-$NF0:n$@$C$?$j$9$k$s$G$7$g$&(B
$B$+!#$I$N(BOS$B$G$b$@$$$?$$0l=o$J$N$+$7$i!)(B
# DOS/Win$B$G$O;w$?$h$&$J4X?t$H$7$F(Bchsize()$B$,$"$k$_$?$$$G$9!#(B

$BD4$Y$k$Y$-;qNA$J$I$"$j$^$7$?$i65$($F$/$@$5$$$^$;!#(B

--
  Daichi GOTO, daichi@jp.FreeBSD.org
