R Under development (unstable) (2023-11-16 r85542 ucrt) -- "Unsuffered Consequences" Copyright (C) 2023 The R Foundation for Statistical Computing Platform: x86_64-w64-mingw32/x64 R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redistribute it under certain conditions. Type 'license()' or 'licence()' for distribution details. R is a collaborative project with many contributors. Type 'contributors()' for more information and 'citation()' on how to cite R or R packages in publications. Type 'demo()' for some demos, 'help()' for on-line help, or 'help.start()' for an HTML browser interface to help. Type 'q()' to quit R. > library("R.utils") Loading required package: R.oo Loading required package: R.methodsS3 R.methodsS3 v1.8.2 (2022-06-13 22:00:14 UTC) successfully loaded. See ?R.methodsS3 for help. R.oo v1.25.0 (2022-06-12 02:20:02 UTC) successfully loaded. See ?R.oo for help. Attaching package: 'R.oo' The following object is masked from 'package:R.methodsS3': throw The following objects are masked from 'package:methods': getClasses, getMethods The following objects are masked from 'package:base': attach, detach, load, save R.utils v2.12.3 successfully loaded. See ?R.utils for help. Attaching package: 'R.utils' The following object is masked from 'package:utils': timestamp The following objects are masked from 'package:base': cat, commandArgs, getOption, isOpen, nullfile, parse, warnings > > pathname <- tempfile() > > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - > # Writing > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - > # Open the temporary file for writing > out <- file(pathname, open="wb") > b <- -128:127 > Java$writeByte(out, b) > s <- -32768:32767 > Java$writeShort(out, s) > i <- c(-2147483648, -2147483647, -1, 0, +1, 2147483646, 2147483647) > Java$writeInt(out, i) > str <- c("This R string was written (using the UTF-8 format) using", + "the static methods of the Java class in the R.utils package.") > str <- paste(str, collapse="\n") > Java$writeUTF(out, str) > close(out) > > > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - > # Reading > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - > for (as.character in c(TRUE, FALSE)) { + # Open the temporary file for reading + inn <- file(pathname, open="rb") + + bfr <- Java$readByte(inn, n=length(b)) + cat("Read ", length(bfr), " bytes.\n", sep="") + if (!identical(bfr, b)) + throw("Failed to read the same data that was written.") + + bfr <- Java$readShort(inn, n=length(s)) + cat("Read ", length(bfr), " shorts.\n", sep="") + if (!identical(bfr, s)) + throw("Failed to read the same data that was written.") + + bfr <- Java$readInt(inn, n=length(i)) + cat("Read ", length(bfr), " ints.\n", sep="") + if (!identical(bfr, i)) + throw("Failed to read the same data that was written.") + + bfr <- Java$readUTF(inn, as.character=TRUE) + if (is.character(bfr)) { + cat("Read ", nchar(bfr), " UTF characters:\n", "'", bfr, "'\n", sep="") + } else { + cat("Read ", length(bfr), " UTF character bytes:\n", "'", hpaste(bfr), "'\n", sep="") + } + + # Trying to read more when there isn't anything else available + bfr <- Java$readUTF(inn, as.character=FALSE) + cat("Read ", length(bfr), " UTF character bytes:\n", "'", hpaste(bfr), "'\n", sep="") + + close(inn) + } # for (as.character ...) Read 256 bytes. Read 65536 shorts. Read 7 ints. Read 117 UTF characters: 'This R string was written (using the UTF-8 format) using the static methods of the Java class in the R.utils package.' Read 0 UTF character bytes: '' Read 256 bytes. Read 65536 shorts. Read 7 ints. Read 117 UTF characters: 'This R string was written (using the UTF-8 format) using the static methods of the Java class in the R.utils package.' Read 0 UTF character bytes: '' > > > file.remove(pathname) [1] TRUE > > proc.time() user system elapsed 0.40 0.06 0.45