Advertisement
Guest User

Untitled

a guest
Dec 14th, 2013
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.34 KB | None | 0 0
  1. ### Code "Exists.java"
  2. ### Orignally taken from http://stackoverflow.com/a/3835183/1440785
  3.  
  4. import java.io.*;
  5. import java.nio.charset.*;
  6.  
  7. public class Exists {
  8. public static void main(String[] args) throws Exception {
  9. if (args.length > 0 && args[0].equals("stat")) {
  10. new File("bbbääccc").exists();
  11. }
  12. else if (args.length > 0 && args[0].equals("new")) {
  13. new File("bbbääccc").createNewFile();
  14. }
  15. else if (args.length > 0 && args[0].equals("list")) {
  16. File[] files = new File(".").listFiles();
  17.  
  18. for (File file : files) {
  19. if (file.getName().startsWith("bb")) {
  20. System.out.println(file);
  21. System.out.println("Hex (current encoding): " + toHex(file.getName().getBytes()) + " --" + file.getName());
  22. String utf8Str = new String(file.getName().getBytes("UTF-8"), Charset.forName("UTF-8"));
  23. System.out.println("Hex (UTF8): " + toHex(file.getName().getBytes("UTF-8")) + " --" + utf8Str);
  24.  
  25. new File("new/as-is-" + file.getName()).createNewFile();
  26. new File("new/utf8-" + utf8Str).createNewFile();
  27. }
  28. }
  29. }
  30. }
  31.  
  32. public static String toHex(byte[] bytes) {
  33. StringBuilder str = new StringBuilder();
  34.  
  35. for (int i = 0; i < bytes.length; i++) {
  36. str.append(String.format("%02x", bytes[i]));
  37. }
  38.  
  39. return str.toString();
  40. }
  41. }
  42.  
  43.  
  44. ### stat() output for new File("bbbääccc").exists()
  45.  
  46. $ LC_CTYPE="en_US.iso88591" strace -f -o out java Exists stat
  47. From file "out": 30989 stat64("bbb\344\344ccc", 0xb7884f2c) = -1 ENOENT (No such file or directory)
  48.  
  49. $ LC_CTYPE="en_US.utf8" strace -f -o out java Exists stat
  50. From file "out": 31096 stat64("bbb\303\244\303\244ccc", 0xb77a9f2c) = -1 ENOENT (No such file or directory)
  51.  
  52.  
  53. ### Java Property file.encoding=.. has no impact on filenames
  54.  
  55. $ LC_CTYPE="en_US.utf8" strace -f -o out java -Dfile.encoding=ISO-8859-1 Exists stat
  56. From file "out": 31121 stat64("bbb\303\244\303\244ccc", 0xb7864f2c) = -1 ENOENT (No such file or directory)
  57.  
  58. $ LC_CTYPE="en_US.utf8" strace -f -o out java -Dfile.encoding=UTF-8 Exists stat
  59. From file "out": 31367 stat64("bbb\303\244\303\244ccc", 0xb76e1f2c) = -1 ENOENT (No such file or directory)
  60.  
  61. $ LC_CTYPE="en_US.iso88591" strace -f -o out java -Dfile.encoding=ISO-8859-1 Exists stat
  62. From file "out": 31158 stat64("bbb\344\344ccc", 0xb7759f2c) = -1 ENOENT (No such file or directory)
  63.  
  64. $ LC_CTYPE="en_US.iso88591" strace -f -o out java -Dfile.encoding=UTF-8 Exists stat
  65. From file "out": 31176 stat64("bbb\344\344ccc", 0xb7851f2c) = -1 ENOENT (No such file or directory)
  66.  
  67.  
  68. ### Creating a file with umlaut (ä)
  69.  
  70. $ LC_CTYPE="en_US.iso88591" strace -f -o out java -Dfile.encoding=ISO-8859-1 Exists new
  71.  
  72. $ ls -al bb*
  73. -rw-rw-r-- 1 user user 0 2013-12-14 15:27 bbb??ccc
  74.  
  75. $ LC_CTYPE="en_US.iso88591" ls -al bb*
  76. -rw-rw-r-- 1 user user 0 2013-12-14 15:27 bbb��ccc
  77.  
  78. $ convmv -f iso-8859-1 -t utf8 bbbääccc
  79. Your Perl version has fleas #37757 #49830
  80. Starting a dry run without changes...
  81. mv "./bbb��ccc" "./bbbääccc"
  82.  
  83.  
  84. ### Create and list a file with umlaut (ä)
  85.  
  86. $ LC_CTYPE="en_US.iso88591" strace -f -o out java -Dfile.encoding=ISO-8859-1 Exists new
  87. // creates new file 'bbbääccc'
  88.  
  89. $ ls bb*
  90. bbb??ccc
  91.  
  92. $ LC_CTYPE="en_US.iso88591" strace -f -o out java -Dfile.encoding=ISO-8859-1 Exists list
  93. ./bbb��ccc
  94.  
  95. $ LC_CTYPE="en_US.iso88591" strace -f -o out java -Dfile.encoding=utf8 Exists list
  96. ./bbbääccc
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement