java.nio.file.SimpleFileVisitor Scala Examples
The following examples show how to use java.nio.file.SimpleFileVisitor.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
Example 1
Source File: UtilTest.scala From daml with Apache License 2.0 | 5 votes |
// Copyright (c) 2020 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. // SPDX-License-Identifier: Apache-2.0 package com.daml.codegen import com.daml.lf.data.Ref.{QualifiedName, PackageId} import java.io.IOException import java.nio.file.attribute.BasicFileAttributes import java.nio.file.{FileVisitResult, Files, Path, SimpleFileVisitor} import com.daml.lf.{iface => I} import org.scalatest.{BeforeAndAfterAll, FlatSpec, Matchers} import org.scalatest.prop.GeneratorDrivenPropertyChecks class UtilTest extends UtilTestHelpers with GeneratorDrivenPropertyChecks { val packageInterface = I.Interface(packageId = PackageId.assertFromString("abcdef"), typeDecls = Map.empty) val scalaPackageParts = Array("com", "digitalasset") val scalaPackage: String = scalaPackageParts.mkString(".") val util = lf.LFUtil( scalaPackage, I.EnvironmentInterface fromReaderInterfaces packageInterface, outputDir.toFile) def damlScalaName(damlNameSpace: Array[String], name: String): util.DamlScalaName = util.DamlScalaName(damlNameSpace, name) behavior of "Util" it should "mkDamlScalaName for a Contract named Test" in { val result = util.mkDamlScalaNameFromDirsAndName(Array(), "Test") result shouldEqual damlScalaName(Array.empty, "Test") result.packageName shouldEqual scalaPackage result.qualifiedName shouldEqual (scalaPackage + ".Test") } it should "mkDamlScalaName for a Template names foo.bar.Test" in { val result = util.mkDamlScalaName(Util.Template, QualifiedName assertFromString "foo.bar:Test") result shouldEqual damlScalaName(Array("foo", "bar"), "Test") result.packageName shouldEqual (scalaPackage + ".foo.bar") result.qualifiedName shouldEqual (scalaPackage + ".foo.bar.Test") } "partitionEithers" should "equal scalaz separate in simple cases" in forAll { iis: List[Either[Int, Int]] => import scalaz.syntax.monadPlus._, scalaz.std.list._, scalaz.std.either._ Util.partitionEithers(iis) shouldBe iis.separate } } abstract class UtilTestHelpers extends FlatSpec with Matchers with BeforeAndAfterAll { val outputDir = Files.createTempDirectory("codegenUtilTest") override protected def afterAll(): Unit = { super.afterAll() deleteRecursively(outputDir) } def deleteRecursively(dir: Path): Unit = { Files.walkFileTree( dir, new SimpleFileVisitor[Path] { override def postVisitDirectory(dir: Path, exc: IOException) = { Files.delete(dir) FileVisitResult.CONTINUE } override def visitFile(file: Path, attrs: BasicFileAttributes) = { Files.delete(file) FileVisitResult.CONTINUE } } ) () } }
Example 2
Source File: TestHelpers.scala From matcher with MIT License | 5 votes |
package com.wavesplatform.dex.util import java.io.IOException import java.nio.file.attribute.BasicFileAttributes import java.nio.file.{FileVisitResult, Files, Path, SimpleFileVisitor} object TestHelpers { def deleteRecursively(path: Path): Unit = Files.walkFileTree( path, new SimpleFileVisitor[Path] { override def postVisitDirectory(dir: Path, exc: IOException): FileVisitResult = { Option(exc).fold { Files.delete(dir) FileVisitResult.CONTINUE }(throw _) } override def visitFile(file: Path, attrs: BasicFileAttributes): FileVisitResult = { Files.delete(file) FileVisitResult.CONTINUE } } ) }
Example 3
Source File: IOUtil.scala From jardiff with Apache License 2.0 | 5 votes |
package scala.tools.jardiff import java.io.IOException import java.net.URI import java.nio.file._ import java.nio.file.attribute.BasicFileAttributes import java.util object IOUtil { def rootPath(fileOrZip: Path): Path = { if (fileOrZip.getFileName.toString.endsWith(".jar")) { val uri = URI.create(s"jar:${fileOrZip.toUri}") newFileSystem(uri, new util.HashMap[String, Any]()).getPath("/") } else { val extSlash = ".jar/" val index = fileOrZip.toString.indexOf(extSlash) if (index == -1) { fileOrZip } else { val uri = URI.create("jar:" + Paths.get(fileOrZip.toString.substring(0, index + extSlash.length - 1)).toUri.toString) val jarEntry = fileOrZip.toString.substring(index + extSlash.length - 1) val system = newFileSystem(uri, new util.HashMap[String, Any]()) system.getPath(jarEntry) } } } private def newFileSystem(uri: URI, map: java.util.Map[String, Any]) = try FileSystems.newFileSystem(uri, map) catch { case _: FileSystemAlreadyExistsException => FileSystems.getFileSystem(uri) } def mapRecursive(source: java.nio.file.Path, target: java.nio.file.Path)(f: (Path, Path) => Unit) = { Files.walkFileTree(source, util.EnumSet.of(FileVisitOption.FOLLOW_LINKS), Integer.MAX_VALUE, new FileVisitor[Path] { def preVisitDirectory(dir: Path, sourceBasic: BasicFileAttributes): FileVisitResult = { val relative = source.relativize(dir).toString if (!Files.exists(target.resolve(relative))) Files.createDirectory(target.resolve(relative)) FileVisitResult.CONTINUE } def visitFile(file: Path, attrs: BasicFileAttributes): FileVisitResult = { val relative = source.relativize(file).toString f(file, target.resolve(relative)) FileVisitResult.CONTINUE } def visitFileFailed(file: Path, e: IOException) = throw e def postVisitDirectory(dir: Path, e: IOException): FileVisitResult = { if (e != null) throw e FileVisitResult.CONTINUE } }) } def deleteRecursive(p: Path): Unit = { import java.io.IOException import java.nio.file.attribute.BasicFileAttributes import java.nio.file.{FileVisitResult, Files, SimpleFileVisitor} Files.walkFileTree(p, new SimpleFileVisitor[Path]() { override def visitFile(file: Path, attrs: BasicFileAttributes): FileVisitResult = { Files.delete(file) FileVisitResult.CONTINUE } override def preVisitDirectory(dir: Path, attrs: BasicFileAttributes): FileVisitResult = { if (dir.getFileName.toString == ".git") FileVisitResult.SKIP_SUBTREE else super.preVisitDirectory(dir, attrs) } override def postVisitDirectory(dir: Path, exc: IOException): FileVisitResult = { val listing = Files.list(dir) try { if (!listing.iterator().hasNext) Files.delete(dir) } finally { listing.close() } FileVisitResult.CONTINUE } }) } }
Example 4
Source File: FileUtil.scala From mleap with Apache License 2.0 | 5 votes |
package ml.combust.bundle.util import java.io.IOException import java.nio.file.attribute.BasicFileAttributes import java.nio.file.{FileVisitResult, Files, Path, SimpleFileVisitor} object FileUtil { def rmRf(path: Path): Unit = { Files.walkFileTree(path, new SimpleFileVisitor[Path]() { override def visitFile(file: Path, attrs: BasicFileAttributes): FileVisitResult = { Files.delete(file) FileVisitResult.CONTINUE } override def postVisitDirectory(dir: Path, exc: IOException): FileVisitResult = { Files.delete(dir) FileVisitResult.CONTINUE } }) } }
Example 5
Source File: IO.scala From perf_tester with Apache License 2.0 | 5 votes |
package org.perftester.process import java.nio.file.{Files, Path, SimpleFileVisitor, FileVisitResult} import java.nio.file.attribute.BasicFileAttributes import java.io.IOException object IO { def deleteDir(root: Path, deleteRoot: Boolean): Unit = { object deleter extends SimpleFileVisitor[Path] { override def visitFile(path: Path, attr: BasicFileAttributes): FileVisitResult = { Files.delete(path) FileVisitResult.CONTINUE } override def postVisitDirectory(path: Path, e: IOException): FileVisitResult = { if (e eq null) { if (deleteRoot || path != root) Files.delete(path) FileVisitResult.CONTINUE } else throw e // directory iteration failed } } Files.walkFileTree(root, deleter) } def jarsIn(path: Path): Seq[Path] = Files .walk(path) .toArray() .map(_.asInstanceOf[Path].toAbsolutePath) .toList .filter(_.getFileName.toString.endsWith(".jar")) def listSourcesIn(path: Path): List[Path] = { def isSource(p: Path) = { val name = p.getFileName.toString name.endsWith(".scala") || name.endsWith(".java") } val maxDepth = 557 Files .walk(path, maxDepth) .toArray .map(_.asInstanceOf[Path].toAbsolutePath) .filter(isSource) .toList } }
Example 6
Source File: ZipArchive.scala From codepropertygraph with Apache License 2.0 | 5 votes |
package io.shiftleft.codepropertygraph.cpgloading import java.io.Closeable import java.nio.file.attribute.BasicFileAttributes import java.nio.file.{FileSystem, FileSystems, FileVisitResult, Files, Path, Paths, SimpleFileVisitor} import java.util.{Collection => JCollection} import scala.collection.mutable.ArrayBuffer import scala.jdk.CollectionConverters._ class ZipArchive(inputFile: String) extends Closeable { private val zipFileSystem: FileSystem = FileSystems.newFileSystem(Paths.get(inputFile), null) private def root: Path = zipFileSystem.getRootDirectories.iterator.next private def walk(rootPath: Path): Seq[Path] = { val entries = ArrayBuffer[Path]() Files.walkFileTree( rootPath, new SimpleFileVisitor[Path]() { override def visitFile(file: Path, attrs: BasicFileAttributes): FileVisitResult = { if (attrs.isRegularFile) entries += file FileVisitResult.CONTINUE } } ) entries.toSeq } def entries: Seq[Path] = walk(root) def getFileEntries: JCollection[Path] = entries.asJava override def close(): Unit = zipFileSystem.close() }
Example 7
Source File: CopyRecursively.scala From scastie with Apache License 2.0 | 5 votes |
import java.nio.file.{Path, Files, SimpleFileVisitor, FileVisitResult} import java.nio.file.attribute.BasicFileAttributes object CopyRecursively { def apply(source: Path, destination: Path, directoryFilter: (Path, Int) => Boolean): Unit = { Files.walkFileTree( source, new CopyVisitor(source, destination, directoryFilter) ) } } class CopyVisitor(source: Path, destination: Path, directoryFilter: (Path, Int) => Boolean) extends SimpleFileVisitor[Path] { private def relative(subPath: Path): Path = destination.resolve(source.relativize(subPath)) private def pathDepth(dir: Path): Int = { dir.getNameCount - source.getNameCount - 1 } override def preVisitDirectory( dir: Path, attrs: BasicFileAttributes ): FileVisitResult = { def copy(): FileVisitResult = { Files.createDirectories(relative(dir)) FileVisitResult.CONTINUE } if (dir == source) { copy() } else if (directoryFilter(source.relativize(dir), pathDepth(dir))) { copy() } else { FileVisitResult.SKIP_SUBTREE } } override def visitFile(file: Path, attrs: BasicFileAttributes): FileVisitResult = { Files.copy(file, relative(file)) FileVisitResult.CONTINUE } }
Example 8
Source File: FileHelper.scala From bahir with Apache License 2.0 | 5 votes |
package org.apache.bahir.utils import java.io.{File, IOException} import java.nio.file.{Files, FileVisitResult, Path, SimpleFileVisitor} import java.nio.file.attribute.BasicFileAttributes object FileHelper extends Logging { def deleteFileQuietly(file: File): Path = { Files.walkFileTree(file.toPath, new SimpleFileVisitor[Path]() { override def visitFile(file: Path, attrs: BasicFileAttributes): FileVisitResult = { try { Files.delete(file) } catch { case t: Throwable => log.warn("Failed to delete", t) } FileVisitResult.CONTINUE } override def postVisitDirectory(dir: Path, exc: IOException): FileVisitResult = { try { Files.delete(dir) } catch { case t: Throwable => log.warn("Failed to delete", t) } FileVisitResult.CONTINUE } }) } }
Example 9
Source File: TestHelpers.scala From Waves with MIT License | 5 votes |
package com.wavesplatform import java.io.IOException import java.nio.file.attribute.BasicFileAttributes import java.nio.file.{FileVisitResult, Files, Path, SimpleFileVisitor} import com.wavesplatform.account.Address import com.wavesplatform.features.BlockchainFeatures import com.wavesplatform.settings.{FunctionalitySettings, GenesisSettings, GenesisTransactionSettings, WavesSettings} import scala.concurrent.duration._ object TestHelpers { def genesisSettings(balances: Map[Address, Long], blockTimestamp: Long = System.currentTimeMillis()): GenesisSettings = { val totalAmount = balances.values.sum val transactions = balances.map { case (account, amount) => GenesisTransactionSettings(account.stringRepr, amount) }.toSeq GenesisSettings(blockTimestamp, blockTimestamp, totalAmount, None, transactions, 1000, 60.seconds) } def enableNG(settings: FunctionalitySettings): FunctionalitySettings = settings.copy( blockVersion3AfterHeight = 0, preActivatedFeatures = settings.preActivatedFeatures ++ Map(BlockchainFeatures.NG.id -> 0) ) def enableNG(settings: WavesSettings): WavesSettings = settings.copy( blockchainSettings = settings.blockchainSettings.copy(functionalitySettings = enableNG(settings.blockchainSettings.functionalitySettings)) ) def deleteRecursively(path: Path): Unit = Files.walkFileTree( path, new SimpleFileVisitor[Path] { override def postVisitDirectory(dir: Path, exc: IOException): FileVisitResult = { Option(exc).fold { Files.delete(dir) FileVisitResult.CONTINUE }(throw _) } override def visitFile(file: Path, attrs: BasicFileAttributes): FileVisitResult = { Files.delete(file) FileVisitResult.CONTINUE } } ) }